import sys INF = 1 << 60 MOD = 10**9 + 7 # 998244353 sys.setrecursionlimit(2147483647) input = lambda:sys.stdin.readline().rstrip() def fourier(f, inverse = False): n = (len(f) - 1).bit_length() for d in range(n): for U in range(1 << n): if not U >> d & 1: s, t = f[U], f[U | 1 << d] f[U], f[U | 1 << d] = s + t, s - t if inverse: f = [v >> n for v in f] return f def resolve(): n, x = map(int, input().split()) A = list(map(int, input().split())) m = max(A).bit_length() f = [0] * (1 << m) for a in A: f[a] += 1 Ff = fourier(f) Ff2 = [v * v for v in Ff] f2 = fourier(Ff2, inverse = True) k = (sum(f2[:x]) - n) // 2 ans = 0 for d in range(m): f = [0] * (1 << m) for a in A: if not a >> d & 1: f[a] += 1 l = sum(f) Ff = fourier(f) Ff2 = [v * v for v in Ff] f2 = fourier(Ff2, inverse = True) l = (sum(f2[:x]) - l) // 2 ans += (k - l) << d print(ans) resolve()