#include typedef long long LL; const int Mod = 998244353; const int MN = 10000005; int Inv[MN]; inline void Init(int N) { Inv[1] = 1; for (int i = 2; i <= N; ++i) Inv[i] = (LL)(Mod - Mod / i) * Inv[Mod % i] % Mod; } int N, C; inline void Solve() { scanf("%d%d", &N, &C); int coef1 = (2 * C + 2) % Mod; int coef2 = (LL)C * C % Mod * (Mod - 4) % Mod; int a0 = 0, a1 = 1, ans = 0; for (int i = 1; i <= N; ++i) { int a2 = ((LL)coef1 * (2 * i - 1) % Mod * a1 + (LL)coef2 * (i - 1) % Mod * a0) % Mod * Inv[i] % Mod; a0 = a1, a1 = a2; ans ^= a1; } printf("%d\n", ans); } int main() { Init(10000000); int Tests; scanf("%d", &Tests); while (Tests--) Solve(); return 0; }