#include<stdio.h>
int top=-1, s[80001]={};
void push(int x)
{
top++;
s[top]=x;
}
int pop()
{
if(top!=-1)
{
top--;
}
}
int main ()
{
int n, sum=0;
long long int hi[80005]={};
scanf("%d", &n);
for(int i=0 ; i<n ; i++)
{
scanf("%d", &hi[i]);
}
for(int i=0 ; i<n ; i++)
{
while(s[top]<hi[i]&&top!=-1)
{
pop();
}
sum+=top+1;
push(hi[i]);
}
printf("%d", sum);
}
/*
#include<stdio.h>
int s[500005][2], top=-1;
void push(int x, int z)
{
top++;
s[top][0]=x;
s[top][1]=z;
}
int pop()
{
if(top!=-1)
{
top--;
}
}
int main ()
{
int n, arr[500005];
scanf("%d", &n);
for(int i=0 ; i<n ; i++)
{
scanf("%d", &arr[i]);
}
for(int i=0 ; i<n ; i++)
{
// arr[i]의 신호를 받을 수 있는 탑만 스택에 남겨놓고,
//arr[i] 의 신호를 받을 수 없는 탑은 다 pop해
while(top!=-1&&s[top][0]<arr[i])
{
pop();
}
if(top==-1)
{
printf("0 ");
}
else
{
printf("%d ", s[top][1]);
}
push(arr[i],i+1);
}
}
*/