#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 4;
long long a[N], lmn[N], rmn[N], lmx[N], rmx[N];
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long i, j, n;
  cin >> n;
  for (i = 1; i <= n; i++) cin >> a[i];
  stack<long long> s;
  for (i = 1; i <= n; i++) {
    while (!s.empty() && a[s.top()] <= a[i]) {
      rmx[s.top()] = i;
      s.pop();
    }
    if (!s.empty()) lmx[i] = s.top();
    s.push(i);
  }
  while (!s.empty()) {
    rmx[s.top()] = n + 1;
    s.pop();
  }
  for (i = 1; i <= n; i++) {
    while (!s.empty() && a[s.top()] >= a[i]) {
      rmn[s.top()] = i;
      s.pop();
    }
    if (!s.empty()) lmn[i] = s.top();
    s.push(i);
  }
  while (!s.empty()) {
    rmn[s.top()] = n + 1;
    s.pop();
  }
  long long ans = 0;
  for (i = 1; i <= n; i++)
    ans += a[i] * ((i - lmn[i]) * (rmn[i] - i) - (i - lmx[i]) * (rmx[i] - i));
  cout << ans * (-1) << "\n";
  return 0;
}
