#include using namespace std; #include #include template struct BIT{//0-indexed private: std::vector data; const int n; public: BIT(int sz) : data(sz+1,0), n(sz) {} T sum(size_t i) const noexcept {//sum[0,i) //++i; T s = 0; while(i > 0){ s += data[i]; i -= i&(-i); } return s; } T sum(size_t i, size_t j) const noexcept {// sum[i,j) return sum(j) - sum(i); } void add(int i, T x) noexcept { ++i; assert(i > 0); while(i <= n){ data[i] += x; i += i&(-i); } } }; int main(){ int n; long long m; cin >> n >> m; vector P(n); for(int i = 0; i < n; ++i){ cin >> P[i]; --P[i]; } BIT bit(n); long long r = 0; for(auto p: P){ r += bit.sum(p,n); bit.add(p,1); } long long ans = (r+m-1)/m*m; if((ans-r)%2) ans += m; if((ans-r)%2){ cout << -1 << '\n'; return 0; } cout << ans << '\n'; }