#!/usr/bin/env pypy3 MOD = 998244353 def fhwt(a, inv=False): n = len(a) assert (n&(n-1)) == 0 i = 1 while i < n: for j in range(0,n,i<<1): for k in range(0,i): s,t = a[j+k], a[j+k+i] a[j+k] = s+t a[j+k+i] = s-t i <<= 1 if inv: for i in range(n): a[i] //= n def bitwise_xor_convolution(a, b): n = len(a) assert (n&(n-1)) == 0 assert len(b) == n _a = a[:] _b = b[:] fhwt(_a); fhwt(_b) for i in range(n): _a[i] *= _b[i] fhwt(_a, inv=True) return _a B = 18 MX = 1<>j&1][k][a[i]>>k&1] += 1 ay = [[[0 for _ in range(2)] for _ in range(B)] for _ in range(MX*2)] for i in range(n): for j in range(B): ay[MX+a[i]][j][a[i]>>j&1] += 1 b = [[0 for _ in range(2)] for _ in range(B)] for x in range(MX): for j in range(B): b[j][x>>j&1] += f[x]*f[x] for s in range(MX-1, 0, -1): for i in range(B): for j in range(2): ay[s][i][j] += ay[s*2][i][j] + ay[s*2+1][i][j] d = B - s.bit_length() sz0 = ay[s*2][0][0] + ay[s*2][0][1] sz1 = ay[s*2+1][0][0] + ay[s*2+1][0][1] for i in range(B): cnt = ax[d][1][i][0] * ay[s*2+1][i][1] + ax[d][1][i][1] * ay[s*2+1][i][0] ans_min -= 4 * 2 * sz0 * cnt * (1<>j&1)]) * (1<