#include #include #include #include #include #define ll long long #define mst(a,x) memset(a,x,sizeof(a)) #define N 50005 #define M 1500005 #define MOD (998244353LL) using namespace std; ll ans, x, pow2[35]; int c[M][2], n, num[M], tot; ll build(ll x) { int cur = 0, t; ll ret = 0; for(int j = 0; j < 30; j++) { if((x >> j) & 1) t = 1; else t = 0; if(~c[cur][1^t]) ret = (ret + (ll)num[c[cur][1^t]] * pow2[j] %MOD) % MOD; if(c[cur][t] == -1) c[cur][t] = tot++; cur = c[cur][t]; num[cur]++; } return ret; } int main() { int T; scanf("%d", &T); pow2[0] = 1; for(int i = 1; i < 30; i++) pow2[i] = pow2[i - 1] * 2 %MOD; for(int _c = 1; _c <= T; _c++) { ans = 0; mst(c, -1); mst(num, 0); tot = 1; scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%I64d", &x); ans += build(x); //printf("%I64d\n", ans); } printf("Case #%d: %I64d\n", _c, ans * 2LL % MOD); } return 0; }