#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100010;
int a[maxn],b[maxn],t[maxn],n,ans;
void read(int &k){
k=0; int f=1; char c=getchar();
while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
k*=f;
}
void add(int x){for(;x<=n;x+=(x&-x)) t[x]++;} //树状数组
int query(int x){int ret=0; for(;x>0;x-=(x&-x)) ret+=t[x]; return ret;}
int main(){
read(n);
for (int i=1;i<=n;i++) read(a[i]),b[i]=a[i]; int N=n; //离散化
sort(b+1,b+N+1); N=unique(b+1,b+1+n)-b-1;
for (int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+1+N,a[i])-b;
for (int i=1;i<=n;i++) ans+=query(a[i]),add(a[i]); //查询比a[i]小的数的个数,并加入a[i]
return printf("%d
",n*(n-1)/2-ans),0;
}