#include #include using namespace std; using mint = atcoder::modint998244353; #define int long long int T; int max_N = 2029; int max_A = 202509; vector> dp(max_N,vector(max_N)); vector> yaku(max_A); //ステップ0-1 数え上げ void count_sequence(){ dp[1][0] = 1; for(int i = 2; i < max_N; i++){ for(int j = 0; j < max_N-2; j++){ if(j > 0) dp[i][j] += dp[i-1][j-1]; dp[i][j] += dp[i-1][j+1]; } } } //ステップ0-2 約数の列挙 void count_yaku(){ for(int d = 1; d < max_N; d++){ for(int j = d; j < max_A; j += d){ yaku[j].push_back(d); } } } void solve(){ //ステップ1 入力の受け取り int N,A; cin>>N>>A; //ステップ2 前計算の情報を利用して計算 mint ans = 0; for(int k:yaku[A]){ ans += dp[N][k]; } //ステップ3. 解答の出力 cout << ans.val() << "\n"; } signed main(){ count_sequence(); count_yaku(); cin>>T; for(int i = 0; i < T; i++) solve(); }