#include //#include //#pragma GCC optimize("Ofast") using namespace std; #define reps(i,s,n) for(int i = s; i < n; i++) #define rep(i,n) reps(i,0,n) #define Rreps(i,n,e) for(int i = n - 1; i >= e; --i) #define Rrep(i,n) Rreps(i,n,0) #define ALL(a) a.begin(), a.end() #define fi first #define se second using ll = long long; using vec = vector; using mat = vector; ll N,M,H,W,Q,K,A,B; string S; typedef pair P; const ll INF = (1LL<<58); ll res(0); using Pint = pair; const int MAX_N = 200005; vec a(MAX_N, 0), sum(MAX_N + 1, 0); vector > bit_sum(18, vector(MAX_N + 1, 0)); void calc1(Pint p){ res += (sum[p.se] - sum[p.fi]) * (p.se - p.fi - 1); rep(i, 18) { ll num = bit_sum[i][p.se] - bit_sum[i][p.fi]; res -= (1LL<>bit)&1){ calc2(p0, q0); calc2(p1, q1); dfs(bit - 1, p0, q1); dfs(bit - 1, p1, q0); }else{ dfs(bit - 1, p0, q0); dfs(bit - 1, p1, q1); } } } int main() { cin>>N>>K; rep(i, N) scanf("%d", &a[i]); a.resize(N); sort(ALL(a)); rep(i, N) sum[i+1] = sum[i] + a[i]; rep(i, 18) rep(j, N) bit_sum[i][j+1] = bit_sum[i][j] + ((a[j]>>i)&1); Pint p(0, N), q(N, N); dfs(18, p, q); cout<