#include <bits/stdc++.h>

using namespace std;

long long int merge_sort(vector<int>& v, int l, int r) {
	if (r - l <= 1) {
		return 0;
	}

	// for (int i = l; i < r; i++) {
	// 	cout << v[i] << " ";
	// }
	// cout << endl;

	int m = (l + r)/2;

	long long count = merge_sort(v, l, m);
	count += merge_sort(v, m, r);

	int i1 = l, i2 = m;

	vector<int> newv;
	while (!(i1 >= m and i2 >= r)) {
		if (v[i1] < v[i2] or i2 >= r and i1 < m) {
			newv.push_back(v[i1]);
			i1++;
		} else if (v[i2] < v[i1] or i1 >= m and i2 < r) {
			newv.push_back(v[i2]);
			i2++;

			count += max(0, m - i1);
		}
	}

	for (int i = l; i < r; i++) {
		v[i] = newv[i-l];
	}

	// for (int i = l; i < r; i++) {
	// 	cout << v[i] << " ";
	// }
	// cout << endl;
	// cout << count << endl;

	return count;
}

long long int paletta_sort(int N, int* V) {
	// for (int i = 0; i < N; i++) cout << V[i] << " ";
	// cout << endl;

	vector<int> v0;
	vector<int> v1;
	
	for (int i = 0; i < N; i++) {
		if (i%2) {
			v1.push_back(V[i]);
		} else {
			v0.push_back(V[i]);
		}
		
		if (V[i] % 2 != i % 2) return -1;
	}

	// for (auto it : v0) { cout << it << " "; }
	// cout << endl;
	// for (auto it : v1) { cout << it << " "; }
	// cout << endl;
	
	long long count1 = merge_sort(v0, 0, v0.size());
	long long count2 = merge_sort(v1, 0, v1.size());
	
	return count1 + count2;
}

int main() {
	static FILE *fr, *fw;
	
	// Declaring variables
	static int N;
	static int* V;
	static long long int numero_ribaltamenti;
	
	
	fr = stdin;
	fw = stdout;
	
	// Reading input
	fscanf(fr, "%d ", &N);
	V = (int*)malloc(N * sizeof(int));
	for (int i0 = 0; i0 < N; i0++) {
		fscanf(fr, "%d ", &V[i0]);
	}
	
	// Calling functions
	numero_ribaltamenti = paletta_sort(N, V);

	// Writing output
	fprintf(fw, "%lld\n", numero_ribaltamenti);
	
	fclose(fr);
	fclose(fw);
	return 0;
}
