#include #define x first #define y second using namespace std; typedef long long LL; typedef pair PII; const int N = 2e5 + 10, mod = 998244353; const LL INF = 0x3f3f3f3f3f3f3f3f; int n, m; int fact[N], infact[N], p[N], s[N]; int qmi(int a, int k) { int res = 1; while (k) { if (k & 1) res = (LL)res * a % mod; a = (LL)a * a % mod; k >>= 1; } return res; } void init() { fact[0] = 1; for (int i = 1; i < N; i ++ ) fact[i] = (LL)fact[i - 1] * i % mod; infact[N - 1] = qmi(fact[N - 1], mod - 2); for (int i = N - 2; i >= 0; i -- ) infact[i] = (LL)infact[i + 1] * (i + 1) % mod; p[0] = 1; for (int i = 1; i < N; i ++ ) p[i] = (LL)p[i - 1] * 2 % mod; s[0] = 1; for (int i = 1; i < N; i ++ ) s[i] = (s[i - 1] + p[i]) % mod; } int C(int m, int n) { if (!n) return 1; if (n > m || n < 0 || m < 0) return 0; return (LL)fact[m] * infact[n] % mod * infact[m - n] % mod; } signed main() { // freopen("bigdata.in", "r", stdin); // freopen("bigdata.out", "w", stdout); init(); int T; scanf("%d", &T); while (T -- ) { scanf("%d%d", &n, &m); int tmp = 0; for (int i = 0; i < m; i ++ ) tmp = (tmp + C(n - 1, i)) % mod; int ans = (LL)s[n - 1] * tmp % mod; printf("%d\n", ans); } return 0; }