#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define pb push_back
#define fi first
#define se second
int n;
int a[200007],b[200007],pset[200007];
long long ans=0;
queue <int> q;
int fset(int x){
	if(pset[x]<=0) return x;
	return pset[x]=fset(pset[x]);
}
void unite(int x,int y){
	x=fset(x);
	y=fset(y);
	if(x==y) return;
	if(pset[x]<=pset[y]){
		pset[x]+=pset[y];
		pset[y]=x;
	}
	else{
		pset[y]+=pset[x];
		pset[x]=y;
	}
}
bool cmp(int x,int y){
	return (a[x]<a[y] || (a[x]==a[y] && x<y));
}
int main(){
	ios_base::sync_with_stdio(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		pset[i]=-1;
		b[i]=i;
	}
	sort(b+1,b+1+n,cmp);
	for(int i=1;i<=n;i++){
		a[b[i]]=i;
	}
	for(int i=1;i<=n;i++) q.push(a[i]);
	for(int i=1;i<=n;i++){
		//cout<<b[i]<<endl;
		while(1){
			int x=q.front();
			q.pop();
			if(fset(x)!=fset(i)){
				unite(x,i);
			}
			else break;
		}
		ans-=pset[fset(i)]+1;
		pset[fset(i)]++;
		q.push(fset(i));
	}
	cout<<ans<<"\n";
}

