#include <bits/stdc++.h>

using namespace std;

pair<long long, vector<int>> mergeSort(const vector<int>& xs){
	long long count = 0;
	vector<int> arr = xs;
	size_t p = 1;
	while (p < xs.size()){
		for (int i = 0; i < xs.size(); i += 2*p){
			vector<int> newArr;
			const int leftLength  = p;
			const int rightLength = min((size_t)p, xs.size()-(i+p));
			int ca = 0, cb = 0;
			while (ca < leftLength || cb < rightLength){
				if (cb != rightLength && (ca == leftLength || arr[i + leftLength + cb] < arr[i + ca])){
					newArr.push_back(arr[i + leftLength + cb]);
					cb++;
					count += leftLength - ca;
				}
				else {
					newArr.push_back(arr[i + ca]);
					ca++;
				}
			}
			for (int j = 0; j < newArr.size(); j++){
				arr[j+i] = newArr[j];
			}
		}
		p *= 2;
	}
	return {count, arr};
}

long long paletta_sort(int N, int V[]) {
    vector<int> pari;
    vector<int> dispari;

	for (int i = 0; i < N; i++){
		if (i % 2 == 0){
			pari.push_back(V[i]);
		}
		else {
			dispari.push_back(V[i]);
		}
	}

	auto [c1, px] = mergeSort(pari);
	auto [c2, dx] = mergeSort(dispari);
	
	vector<int> xs(N);
	for (int i = 0; i < N; i++){
		if (i % 2 == 0){
			xs[i] = px[i / 2];
		}
		else {
			xs[i] = dx[i / 2];
		}
	}

	if (!is_sorted(xs.begin(), xs.end())) 	return -1;
	else 									return c1+c2;

}
