#include<stdio.h>
#define MAX 200000
#define EMAX 1000000010

int A[MAX];
int LEFT[MAX / 2 + 2], RIGHT[MAX / 2 + 2];

long long Devide(int A[], int sp, int mid, int ep) {
	int pos_L = 0, pos_R = 0;
	long long addCount = 0;
	for (int i = 0; i < mid - sp; i++) LEFT[i] = A[sp + i];
	LEFT[mid - sp] = EMAX;
	for (int i = 0; i < ep - mid; i++) RIGHT[i] = A[mid + i];
	RIGHT[ep - mid] = EMAX;
	for (int i = 0; i < ep - sp; i++) {
		if (LEFT[pos_L] >= RIGHT[pos_R]) {
			A[sp + i] = RIGHT[pos_R];
			addCount += mid - sp - pos_L;
			pos_R++;
		}
		else if (LEFT[pos_L] < RIGHT[pos_R]) {
			A[sp + i] = LEFT[pos_L];
			pos_L++;
		}
	}
	return addCount;
}

long long countInv(int A[], int sp, int ep) {
	long long count = 0;
	if (ep - sp != 1) {
		count += countInv(A, sp, (sp + ep) / 2);
		count += countInv(A, (sp + ep) / 2, ep);
		count += Devide(A, sp, (sp + ep) / 2, ep);
	}
	return count;
}


int main() {
	int N;
	long long ans;
	scanf("%d", &N);
	for (int i = 0; i < N; i++) {
		scanf("%d", &A[i]);
	}

	ans = countInv(A, 0, N);
	printf("%lld\n", ans);

	return 0;
}

