#include<bits/stdc++.h>
using namespace std;
long long ans;
void s(int l,int r,vector<int>&a){
if(l>=r)return;
int i=l;int j=(l+r)/2+1;
s(l,(l+r)/2,a);
s((l+r)/2+1,r,a);
vector<int>t;
while(i<=(l+r)/2&&j<=r){
if(a[i]<=a[j]){
t.push_back(a[i]);
i++;
}
else{
t.push_back(a[j]);
ans+=(l+r)/2-i+1;//这一步十分关键,解释一下为什么要这么做
//当我们在合并两个有序数组时,
//如果发现右半部分的某个元素 a[j] 小于左半部分的某个元素 a[i] ,
//那么根据归并排序的性质,
//左半部分中所有尚未被处理的元素(即从a[i]到a[mid]的所有元素)都大于a[j]。
//因此这些元素都与a[j]构成逆序对
j++;
}
}
while(i<=(l+r)/2){
t.push_back(a[i]);
i++;
}
while(j<=r){
t.push_back(a[j]);
j++;
}
for(int k=l;k<=r;k++){
a[k]=t[k-l];
}
}
signed main(){
int n;cin>>n;
vector<int>a(n);
for(int i=0;i<n;i++)cin>>a[i];
s(0,n-1,a);
cout<<ans;
return 0;
}