#include <bits/stdc++.h>
#define Nmax 2005
#define MOD (1LL<<32)
using namespace std;
struct el
{
int val,poz;
bool operator <(const el &A) const
{
return val<A.val;
}
} v[Nmax];
unsigned int a[Nmax],sum[Nmax][Nmax],n,maxx;
inline void Normalize()
{
sort(v+1,v+n+1);
a[v[1].poz]=1;
for(int i=2;i<=n;++i)
{
a[v[i].poz]=a[v[i-1].poz];
if(v[i].val>v[i-1].val) ++a[v[i].poz];
}
maxx=a[v[n].poz];
}
int main()
{
int i,j;
unsigned int sol=0;
ifstream cin("psir.in");
ofstream cout("psir.out");
cin>>n;
for(i=1;i<=n;++i)
{
cin>>v[i].val;
v[i].poz=i;
}
Normalize();
for(i=2;i<=n;++i)
{
for(j=i-1;j;--j)
{
long long val;
if(a[i]==a[j]) val=0;
else
if(a[i]>a[j])
{
val=1LL*sum[j][maxx]-sum[j][a[i]];
if(val<0) val+=MOD;
}
else val=sum[j][a[i]-1];
sol=(val+1+sol)%MOD;
sum[i][a[j]]=(val+1+sum[i][a[j]])%MOD;
}
for(j=2;j<=maxx;++j)
sum[i][j]=(1LL*sum[i][j]+sum[i][j-1])%MOD;
}
cout<<sol<<"\n";
return 0;
}