#include <iostream>
using namespace std;
const int mxN = 1e5;
typedef long long ll;
ll st[mxN+1], l[mxN+1], r[mxN+1], v[mxN+1];
int main()
{
    ll sol = 0, n, top = 0 ;
    cin>>n;
    for(int i = 1;i<=n;i++)
    {
        cin>>v[i];
        while(top > 0 && v[st[top]] < v[i])
            r[st[top]] = i, top--;
        st[++top] = i;
    }
    while(top>0) r[st[top]] = n+1, top--;
    for(int i = n;i>0;i--)
    {
        while(top > 0 && v[st[top]] < v[i])
            l[st[top]] = i, top--;
        st[++top] = i;
    }
    for(int i = 1;i<=n;i++)
    {
        ll A = i - l[i];
        ll B = r[i] - i;
        sol+= v[i] * A*B;
    }
    cout<<sol<<'\n';
    return 0;
}
