#include<iostream>
using namespace std;

int h[2000000], beginn[2000000], schluss[2000000], seg_ind[2000000];

int find_max(int beg, int end1)
{
    int max_num=0;
    for(int i=beg;i<=end1;i++)
    {
        if(max_num<h[i])
        {
            max_num=h[i];
        }
    }
    return max_num;
}

int find_max_br(int num, int beg, int end1)
{
    int br=0;
    for(int i=beg;i<=end1;i++)
    {
        if(num==h[i])
        {
            seg_ind[br]=i;
            br++;
        }
    }
    return br;
}

int br_prepis(int br_edn)
{
    int br_prepis=0;
    for(int i=br_edn-1;i>=0;i--)
    {
        br_prepis+=i;
    }
}

int main()
{
    long long N, br=0, left=1, seg_max;
    cin>>N;
    for(int i=0;i<N;i++)
    {
        cin>>h[i];
    }
    beginn[0]=0;
    schluss[0]=N-1;
    for(int i=0;i<left;i++)
    {
        if(beginn[i]<schluss[i])
        {
            seg_max=find_max(beginn[i], schluss[i]);
            //cout<<seg_max;
            if(find_max_br(seg_max, beginn[i], schluss[i])==1)
            {
                left++;
                br+=schluss[i]-beginn[i];
                if(seg_ind[0]==beginn[i])
                {
                    beginn[left]=beginn[i]+1;
                    schluss[left]=schluss[i];
                }
                else
                {
                    if(seg_ind[0]==schluss[i])
                    {
                        beginn[left]=beginn[i];
                        schluss[left]=schluss[i]-1;
                    }
                    else
                    {
                        beginn[left]=beginn[i];
                        schluss[left]=seg_ind[0]-1;
                        left++;
                        beginn[left]=seg_ind[0]+1;
                        schluss[left]=schluss[i];
                    }
                }
            }
            else
            {
                int j;
                for(j=0;j<find_max_br(seg_max, beginn[i], schluss[i]);j++)
                {
                    left++;
                    if(j==0)
                    {
                        beginn[left]=beginn[i]+1;
                        //schluss[left]=
                    }
                }
                br+=(schluss[i]-beginn[i]+1-find_max_br(seg_max, beginn[i], schluss[i]))*find_max_br(seg_max, beginn[i], schluss[i]);
                br+=br_prepis(j);
            }
        }
    }
    cout<<br<<endl;
    return 0;
}