#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, k, q;
int mod = 20191126;
struct matrix{ //定義矩陣
int mat[6][6];
void reset(){
memset(mat, 0, sizeof(mat));
}
};
matrix mul(matrix a, matrix b){ //矩陣乘法
matrix c;
c.reset();
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
for(int k=0;k<6;k++){
c.mat[i][j] += ((a.mat[i][k] % mod) * (b.mat[k][j] % mod) % mod);
c.mat[i][j] %= mod;
}
}
}
return c;
}
matrix fpow(matrix a, int n){ //快速冪
matrix b;
b.reset();
for(int i=0;i<6;i++) b.mat[i][i] = 1;
while(n){
if(n % 2){
b = mul(b, a);
}
a = mul(a, a);
n /= 2;
}
return b;
}
signed main(){
ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>q;
matrix A;
A.reset();
A.mat[1][0] = A.mat[0][1] = A.mat[1][1] = 1;
A.mat[0][2] = A.mat[1][2] = A.mat[2][2] = 1;
A.mat[0][3] = A.mat[1][3] = A.mat[2][3] = A.mat[3][3] = 1;
A.mat[0][4] = A.mat[1][4] = A.mat[2][4] = A.mat[3][4] = A.mat[4][4] = 1;
A.mat[0][5] = A.mat[1][5] = A.mat[2][5] = A.mat[3][5] = A.mat[4][5] =
A.mat[5][5] = 1;
while(q--){
cin>>k>>n;
/*for(int i=0;i<6;i++){
for(int j=0;j<6;j++) cout<<A.mat[j][i];
cout<<"\n";
}*/
int a[6] = {1, 1, 2, 3, 4, 5}, b[6] = {};
if(n - 2 <= 0){
if(n == 1) cout<<"1\n";
else {
cout<<a[k+1]<<"\n";
}
continue;
}
matrix AA = fpow(A, n-2);
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
b[i] += (AA.mat[j][i] * a[j]) % mod;
b[i] %= mod;
}
}
// for(int i=0;i<6;i++) cout<<b[i]<<" ";
// cout<<"\n";
cout<<b[k+1]<<"\n";
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBpbnQgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBrLCBxOwppbnQgbW9kID0gMjAxOTExMjY7CnN0cnVjdCBtYXRyaXh7IC8v5a6a576p55+p6ZmjCiAgICBpbnQgbWF0WzZdWzZdOwogICAgdm9pZCByZXNldCgpewogICAgICAgIG1lbXNldChtYXQsIDAsIHNpemVvZihtYXQpKTsKICAgIH0KfTsKbWF0cml4IG11bChtYXRyaXggYSwgbWF0cml4IGIpeyAvL+efqemZo+S5mOazlQogICAgbWF0cml4IGM7CiAgICBjLnJlc2V0KCk7CiAgICBmb3IoaW50IGk9MDtpPDY7aSsrKXsKICAgICAgICBmb3IoaW50IGo9MDtqPDY7aisrKXsKICAgICAgICAgICAgZm9yKGludCBrPTA7azw2O2srKyl7CiAgICAgICAgICAgICAgICBjLm1hdFtpXVtqXSArPSAoKGEubWF0W2ldW2tdICUgbW9kKSAqIChiLm1hdFtrXVtqXSAlIG1vZCkgJSBtb2QpOwogICAgICAgICAgICAgICAgYy5tYXRbaV1bal0gJT0gbW9kOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGM7Cn0KbWF0cml4IGZwb3cobWF0cml4IGEsIGludCBuKXsgLy/lv6vpgJ/lhqoKICAgIG1hdHJpeCBiOwogICAgYi5yZXNldCgpOwogICAgZm9yKGludCBpPTA7aTw2O2krKykgYi5tYXRbaV1baV0gPSAxOwogICAgd2hpbGUobil7CiAgICAgICAgaWYobiAlIDIpewogICAgICAgICAgICBiID0gbXVsKGIsIGEpOwogICAgICAgIH0KICAgICAgICBhID0gbXVsKGEsIGEpOwogICAgICAgIG4gLz0gMjsKICAgIH0KICAgIHJldHVybiBiOwp9CnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApLGNpbi50aWUoMCksY291dC50aWUoMCk7CiAgICBjaW4+PnE7CiAgICBtYXRyaXggQTsKICAgIEEucmVzZXQoKTsKICAgIEEubWF0WzFdWzBdID0gQS5tYXRbMF1bMV0gPSBBLm1hdFsxXVsxXSA9IDE7CiAgICBBLm1hdFswXVsyXSA9IEEubWF0WzFdWzJdID0gQS5tYXRbMl1bMl0gPSAxOwogICAgQS5tYXRbMF1bM10gPSBBLm1hdFsxXVszXSA9IEEubWF0WzJdWzNdID0gQS5tYXRbM11bM10gPSAxOwogICAgQS5tYXRbMF1bNF0gPSBBLm1hdFsxXVs0XSA9IEEubWF0WzJdWzRdID0gQS5tYXRbM11bNF0gPSBBLm1hdFs0XVs0XSA9IDE7CiAgICBBLm1hdFswXVs1XSA9IEEubWF0WzFdWzVdID0gQS5tYXRbMl1bNV0gPSBBLm1hdFszXVs1XSA9IEEubWF0WzRdWzVdID0KICAgIEEubWF0WzVdWzVdID0gMTsKICAgIHdoaWxlKHEtLSl7CiAgICAgICAgY2luPj5rPj5uOwogICAgICAgIC8qZm9yKGludCBpPTA7aTw2O2krKyl7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8NjtqKyspIGNvdXQ8PEEubWF0W2pdW2ldOwogICAgICAgICAgICBjb3V0PDwiXG4iOwogICAgICAgIH0qLwogICAgICAgIGludCBhWzZdID0gezEsIDEsIDIsIDMsIDQsIDV9LCBiWzZdID0ge307CiAgICAgICAgaWYobiAtIDIgPD0gMCl7CiAgICAgICAgICAgIGlmKG4gPT0gMSkgY291dDw8IjFcbiI7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgY291dDw8YVtrKzFdPDwiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBtYXRyaXggQUEgPSBmcG93KEEsIG4tMik7CiAgICAgICAgZm9yKGludCBpPTA7aTw2O2krKyl7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8NjtqKyspewogICAgICAgICAgICAgICAgYltpXSArPSAoQUEubWF0W2pdW2ldICogYVtqXSkgJSBtb2Q7CiAgICAgICAgICAgICAgICBiW2ldICU9IG1vZDsKICAgICAgICAgICAgfQogICAgICAgIH0KLy8gICAgICAgIGZvcihpbnQgaT0wO2k8NjtpKyspIGNvdXQ8PGJbaV08PCIgIjsKLy8gICAgICAgIGNvdXQ8PCJcbiI7CiAgICAgICAgY291dDw8YltrKzFdPDwiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0K