rt
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define deap(i,a,b) for(int i=a;i>=b;i--)
#define in(a) a=read()
const int N = 1e5+5;
const int inf = INT_MAX;
inline int read() {
int x=0,f=1;
char ch=getchar();
while (ch<'0'||ch>'9') {
if (ch=='-') f=-1;
ch=getchar();
}
while (ch>='0'&&ch<='9') {
x=x*10+ch-48;
ch=getchar();
}
return x*f;
}
void fast() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
int sta1[N],sta2[N],top1,top2,l[N],r[N],ls[N],rs[N];
signed main() {
//fast();
int n;
in(n);
int *a=new int[n+1];
rep(i,1,n)in(a[i]);
int ans=0,sum;
rep(i,1,n){
while(top1&&a[sta1[top1]]<a[i])r[sta1[top1--]]=i-1;
while(top2&&a[sta2[top2]]>a[i])rs[sta2[top2--]]=i-1;
sta1[++top1]=sta2[++top2]=i;
}
while(top1)r[sta1[top1--]]=n;
while(top2)rs[sta2[top2--]]=n;
deap(i,n,1){
while(top1&&a[sta1[top1]]<=a[i])l[sta1[top1--]]=i+1;
while(top2&&a[sta2[top2]]>=a[i])ls[sta2[top2--]]=i+1;
sta1[++top1]=sta2[++top2]=i;
}
while(top1)l[sta1[top1--]]=1;
while(top2)ls[sta2[top2--]]=1;
rep(i,1,n){
ans=ans+a[i]*(i-l[i]+1)*(r[i]-i+1);
ans=ans-a[i]*(i-ls[i]+1)*(rs[i]-i+1);
}
cout<<ans;
delete[]a;
return 0;
}