#include <bits/stdc++.h>
using namespace std;
stack<long long> S;
long long l[200010], r[200010], ans, n, a[200010];
void input() {
  scanf("%lld", &n);
  long long i;
  for (i = 1; i <= n; i++) scanf("%lld", &a[i]);
}
void process() {
  long long i;
  for (i = 1; i <= n + 1; i++) {
    while (!S.empty()) {
      if (a[S.top()] > a[i]) {
        r[S.top()] = i;
        S.pop();
      } else
        break;
    }
    S.push(i);
  }
  while (!S.empty()) S.pop();
  for (i = n; i >= 0; i--) {
    while (!S.empty()) {
      if (a[S.top()] > a[i]) {
        l[S.top()] = i;
        S.pop();
      } else
        break;
    }
    S.push(i);
  }
}
void output() {
  long long i;
  for (i = 1; i <= n; i++) {
    ans += (r[i] - i) * (i - l[i]) * a[i];
  }
  printf("%lld", ans);
}
int main() {
  input();
  process();
  output();
  return 0;
}
