#include <iostream>
#include <vector>
using namespace std;

#define SENTINEL 2000000000

long long merge(vector<int>& array, int left, int mid, int right) {
    long long cnt = 0;          // 転倒数を数える
    // 分割した配列LとRを生成
    int n1 = mid - left;        // Lの大きさ
    int n2 = right - mid;       // Rの大きさ
    vector<int> L(n1 + 1);
    vector<int> R(n2 + 1);
    for (int i = 0; i < n1; ++i) {
        L[i] = array[left + i];
    }
    for (int i = 0; i < n2; ++i) {
        R[i] = array[mid + i];
    }
    L[n1] = SENTINEL;
    R[n2] = SENTINEL;

    // LとRを比べて，もとの配列へソート
    int i = 0, j = 0;
    for (int k = left; k < right; ++k) {
        if (L[i] <= R[j]) {
            array[k] = L[i++];
        } else {
            array[k] = R[j++];
            cnt += n1 - i;
        }
    }

    return cnt;
}

long long mergeSort(vector<int>& array, int left, int right) {
    int mid;
    long long cnt1, cnt2, cnt3;
    if (left + 1 < right) {
        mid = (left + right) / 2;
        cnt1 = mergeSort(array, left, mid);
        cnt2 = mergeSort(array, mid, right);
        cnt3 = merge(array, left, mid, right);
        return cnt1 + cnt2 + cnt3;
    } else {
        return 0;
    }
}

int main() {
    int n;
    cin >> n;
    vector<int> array(n);
    for (int i = 0; i < n; ++i) {
        cin >> array[i];
    }
    
    long long ans = mergeSort(array, 0, n);

    cout << ans << endl;

    return 0;
}

#include <stdio.h>
#include <limits.h>
 
#define MAX 200000
#define INF INT_MAX
typedef long long ll;
 
void merge(int*, int, int, int);
void mergesort(int*, int, int);
 
ll ans;
 
int n, a[MAX];
 
int main(){
  int i;
 
  scanf("%d" ,&n);
  for(i = 0 ; i < n ; i++){
    scanf("%d" ,a + i);
  }
  mergesort(a,0,n);
  printf("%lld\n" ,ans);
 
  return 0;
}
 
void merge(int a[], int left, int mid, int right){
  int n1 = mid - left, n2 = right - mid;
  int L[n1+1], R[n2+1], i, j, k;
  
  for(i = 0 ; i < n1 ; i++){
    L[i] = a[left + i];
  }
  
  for(i = 0 ; i < n2 ; i++){
    R[i] = a[mid + i];
  }
  
  L[n1] = R[n2] = INF;
  
  for(i = 0, j = 0, k = left ; k < right ; k++){
    if(i < n1 && (j == n2 || L[i] <= R[j])){
      a[k] = L[i++];
    }else{
      ans += (n1 + n2) / 2 - i;
      a[k] = R[j++];
    }
  }
}

void mergesort(int a[], int left, int right){
  int mid;
  
  if(left + 1 < right){
    mid = (left + right) / 2;
    mergesort(a, left, mid);
    mergesort(a, mid, right);
    merge(a, left, mid, right);
  }
}
