#include<bits/stdc++.h>

#define read(v) for(auto &i : v) cin >> i;

#define fl "\n"

using namespace std;
using ll = long long;
using pll = pair<ll, ll>;

struct seg {
	ll n;
	vector<ll> st;
	
	void build(ll N) {
		n = N;
		st.resize(4*n);
		for(auto &i : st) i = 0;
	}
	
	void update(ll i, ll l, ll r, ll pos, ll x) {
		if(r-l == 1) {
			st[i] = x;
			return;
		}
		
		ll m = (l+r)/2;
		
		if(pos < m) update(2*i, l, m, pos, x);
		else update(2*i+1, m, r, pos, x);
		
		st[i] = st[2*i] + st[2*i+1];
	}
	
	void update(ll pos, ll x) {
		update(1, 0, n, pos, x);
	}
	
	ll query(ll i, ll l, ll r, ll ql, ll qr) {
		if(l >= ql && r <= qr) {
			return st[i];
		} else if(l >= qr || r <= ql) {
			return 0;
		}
		
		ll m = (l+r)/2;
		
		return query(2*i, l, m, ql, qr) + query(2*i+1, m, r, ql, qr);
	}
	
	ll query(ll l, ll r) {
		return query(1, 0, n, l, r);
	}
};

ll bubble(vector<ll> &v) {
	seg st;
	ll n = v.size();
	st.build(n);
	ll spostamenti = 0;
	for(ll i = n-1; i >= 0; i--) {
		spostamenti += st.query(0, v[i]);
		st.update(v[i], 1);
	}
	return spostamenti;
}

long long paletta_sort(int n, int V[]) {
	vector<ll> v(n);
	for(ll i = 0; i < n; i++) v[i] = V[i];
	
	for(ll i = 0; i < n; i++) if(i%2 != v[i]%2) return -1;
	
	vector<ll> perm1(n/2), perm2(n/2);
	for(ll i = 0; i < n; i++) {
		if(i%2) {
			perm2[i/2] = v[i]/2;
		} else {
			if(i == n-1) perm1.push_back(v[i]/2);
			else perm1[i/2] = v[i]/2;			
		}
	}
	
	return bubble(perm1) + bubble(perm2);
}

//int main() {
//	ll n;
//	cin >> n;
//	vector<ll> v(n);
//	read(v);
//	
//	cout << paletta_sort(n, v) << fl;
//}

