#include <iostream>
#define M 100001
using namespace std;
long long merge_sort_main(int a[],int copy[],int begin,int end){
if(begin == end){
return 0;
}
int mid = begin + (end - begin) / 2;
int left = merge_sort_main(a,copy,begin,mid);
int right = merge_sort_main(a,copy,mid+1,end);
int i = mid,j = end,k = end + 1;
long long ans = left + right;
while(i >= begin && j >= mid + 1){
if(copy[i] > copy[j]){
a[--k] = copy[i--];
ans += j - mid;
}
else{
a[--k] = copy[j--];
}
}
while(i >= begin){
a[--k] = copy[i--];
}
while(j >= mid+1){
a[--k] = copy[j--];
}
return ans;
}
long long merge_sort(int a[],int n){
int copy[M];
for(int i=0;i<n;i++){
copy[i] = a[i];
}
return merge_sort_main(a,copy,0,n-1);
}
int main(){
int n;
while(cin>>n){
int a[M];
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<merge_sort(a,n)<<endl;
}
return 0;
}
#define M 100001
using namespace std;
long long merge_sort_main(int a[],int copy[],int begin,int end){
if(begin == end){
return 0;
}
int mid = begin + (end - begin) / 2;
int left = merge_sort_main(a,copy,begin,mid);
int right = merge_sort_main(a,copy,mid+1,end);
int i = mid,j = end,k = end + 1;
long long ans = left + right;
while(i >= begin && j >= mid + 1){
if(copy[i] > copy[j]){
a[--k] = copy[i--];
ans += j - mid;
}
else{
a[--k] = copy[j--];
}
}
while(i >= begin){
a[--k] = copy[i--];
}
while(j >= mid+1){
a[--k] = copy[j--];
}
return ans;
}
long long merge_sort(int a[],int n){
int copy[M];
for(int i=0;i<n;i++){
copy[i] = a[i];
}
return merge_sort_main(a,copy,0,n-1);
}
int main(){
int n;
while(cin>>n){
int a[M];
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<merge_sort(a,n)<<endl;
}
return 0;
}