#include <bits/stdc++.h>
static FILE *fr, *fw;

// Declaring variables
static int N;
static int* V;
static long long int numero_ribaltamenti;

#include <bits/stdc++.h>
using namespace std;

long long mergeSort2(int a, vector<vector<int>> &M, vector<int> A, vector<int> &B){
    M[a].clear();
    int j=0;
    long long ans=0;
    for(int i=0; i<A.size(); i++){
        while(j<B.size() && B[j]<A[i]){
            M[a].push_back(B[j]);
            j++;
            ans+=A.size()-i;
        }
        M[a].push_back(A[i]);
    }
    while(j<B.size()){
        M[a].push_back(B[j]);
        j++;
    }
    return ans;
}

long long mergeSort(vector<int> V){
    vector<vector<int>> M(V.size());
	for(int i=0; i<V.size(); i++){
		M[i].push_back({V[i]});
	}

    int n=V.size()-1;
    long long ans=0;

    while(n>0){
        for(int i=0;i<=(n-1)/2; i++){
            ans += mergeSort2(i, M, M[i*2], M[i*2+1]);
        }
        if(n%2==0){
            M[n/2]=M[n];
        }
        n=n/2;
    }

    return ans;
}

long long paletta_sort(int N, int V[]) {



    vector<int> P;
    vector<int> D;

    for(int i=0; i<N; i++){
        if(i%2==0){
            P.push_back(V[i]);
            if(V[i]%2==1){
                return -1;
            }
        }else{
            D.push_back(V[i]);
            if(V[i]%2==0){
                return -1;
            }
        }
    }

    long long ans = 0;
    ans += mergeSort(P);
    ans += mergeSort(D);
    return ans;
}
