#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int S = 1;
void s(vector<ll>V){
	for(auto i : V) cout << i << " ";
	cout << endl;
}
void s(vector<int>V){
	for(auto i : V) cout << i << " ";
	cout << endl;
}
vector<ll>st;
vector<int>V; int N;
void build(int n, int sl, int sr){
	cout << "(" << n << ") ";
	if(sl == sr){
		if(sl < N){
			st[n] = 1;
		}
		return;
	}
	int m = sl + (sr - sl) / 2;
	build(2 * n, sl, m);
	build(2 * n + 1, m + 1, sr);
	st[n] = st[2 * n] + st[2 * n + 1];
	
}
ll query(int n, int sl, int sr, int ql, int qr){
	if(ql > sr or qr < sl) return 0;
	if(sl >= ql and sr <= qr) return st[n];
	int m = sl + (sr - sl) / 2;
	return query(2 * n, sl, m, ql, qr) + query(2 * n + 1, m + 1, sr, ql, qr);
}
void change(int n, int sl, int sr, int pos){
	if(sl > pos or sr < pos) return;
	if(sl == sr){
		st[n]++;
		return;
	}
	int m = sl + (sr - sl) / 2;
	change(2 * n, sl, m, pos);
	change(2 * n, m + 1, sr, pos);
	st[n] = st[2 * n] + st[2 * n + 1];
}
ll c(vector<int>V1, int N1){
//	cout << "O";
	V = V1; N = N1;
	S = 1;
//	cout << "(" << N << ")";
	while(S < N) S <<= 1;
	st.assign(2 * S, 0);
//	cout << S;

//	build(1, 0, S - 1);
//	s(st);
	ll ans = 0;
	for(int i = 0; i < N; i++){
		ans += query(1, 0, S - 1, 0, V[i] - 1);

		change(1, 0, S - 1, V[i]);
//		cout << i << ", "; s(st);
	}
//	cout << "Y";
	return ans;
}
long long paletta_sort(int N, int V[]) {
    vector<int>A, B;
    for(int i = 0; i < N; i++){
    	if(i % 2 != V[i] % 2) return -1;
    	if(i % 2 == 0){
    		A.push_back(V[i] / 2);
		}
		else{
			B.push_back(V[i] / 2);
		}
	}

	ll ans = c(A, A.size());
//	cout << "\n\n";
//	s(B);
	ans += c(B, B.size());
	return ans;
}

//int main(){
//	int N; cin >> N;
//	int V[N];
//	for(int i = 0; i < N; i++) cin >> V[i];
//	cout << paletta_sort(N, V);
//}