#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using Graph = vector>; #define rep(i,x) for(ll i=0;i<(ll)(x);i++) #define rrep(i,x) for(ll i=1;i<=(ll)(x);i++) #define all(v) v.begin(),v.end() typedef pair pii; ll mod998 = 998244353; ll mod109 = 1e9 + 7; //vector> a(n,vector(n)); using mint = atcoder::modint998244353; struct BIT { vector data; BIT(ll sz) { data.assign(++sz, 0); } // sum of [0,k] ll sum(ll k) { ll ret = 0; for (++k; k > 0; k -= k & -k) ret += data[k]; return (ret); } // [i, j] ll range_sum(ll i, ll j) { if (i == 0) { return sum(j); } else { return sum(j) - sum(i - 1); } } void add(ll k, ll x) { for (++k; k < data.size(); k += k & -k) data[k] += x; } }; // BITを用いた転倒数 // // (Aの値域に注意, 必要なら座標圧縮する) // 入力:{100,100}などはREします // ... というのはBITの値域が0~N-1なため。BIT(N)のNを直接指定するならRE回避可能 ll inversion_number(vector A) { ll N = A.size(); auto bit = BIT(N); ll cnt = 0; for(int i =0;i> n; vector a(n); ll m; cin >> m; rep(i, n) { cin >> a[i]; a[i]--; } ll k = inversion_number(a); if (k % m == 0)cout << k << endl; else { if (m % 2 == 0) { if (k % 2 == 1)cout << -1 << endl; else { cout << (k / m + 1) * m << endl; } } else if (((k / m + 1) * m) % 2 != k % 2) { cout << (k / m + 2) * m << endl; } else cout << (k / m + 1) * m << endl; } }