#include #include #include #include #include #include using mint = atcoder::modint998244353; // // O(nm) 時間 mint Solve(const int n, const std::int64_t m) { std::vector dp(n + 1, std::vector(m + 1, mint::raw(0))); dp[0][0] = 1; for (std::int64_t diag = 0; diag < n + m; ++diag) { const int min_i = std::max(diag - m, INT64_C(0)); const int max_i = std::min(diag, std::int64_t{n}); mint sum = 0; for (int i = min_i; i <= max_i; ++i) { sum += dp[i][diag - i]; } for (int i = min_i; i <= max_i; ++i) { const std::int64_t j = diag - i; assert(0 <= j && j <= m); if (j + 1 <= m) dp[i][j + 1] += sum; if (i + 1 <= n) { dp[i + 1][j] += sum; if (j + 1 <= m) dp[i + 1][j + 1] += sum; } } } return dp[n][m]; } int main() { constexpr int kMaxT = 20000, kMaxN = 10000000; constexpr std::int64_t kMaxM = 1000000000000000000; int t; std::cin >> t; assert(1 <= t && t <= kMaxT); while (t--) { int n; std::int64_t m; std::cin >> n >> m; assert(0 <= n && n <= kMaxN && 0 <= m && m <= kMaxM); std::cout << Solve(n, m).val() << '\n'; } return 0; }