#include<bits/stdc++.h>
using namespace std;
struct special
{
    int chislo;
    int broj;
    int duplicates;
};
int m[2000001];
int ans;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>m[i];
    }
    stack<special>st;
    for(int i=0;i<n;i++)
    {
        int dup=0;
        int br=0;
        while(!st.empty()&&st.top().chislo<=m[i])
        {
            if(st.top().chislo==m[i])
            {
                //dup+=st.top().duplicates;
                br+=st.top().broj+1;
                st.pop();
                continue;
            }
            br+=st.top().broj+1;//+st.top().duplicates;
            st.pop();
        }
        ans+=br;
        st.push({m[i],br,dup});

    }
    while(!st.empty())
    {
        st.pop();
    }
    for(int i=n-1;i>=0;i--)
    {
        int br=0;
        int dup=0;
        while(!st.empty()&&st.top().chislo<=m[i])
        {
            if(st.top().chislo==m[i])
            {
                dup+=st.top().duplicates+1;
                br+=st.top().broj;
                st.pop();
                continue;
            }
            br+=st.top().broj+1+st.top().duplicates;
            st.pop();
        }
        ans+=br;
        st.push({m[i],br,dup});
    }
    cout<<ans;
    return 0;
}
