//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
 
#define file "permutations"
#define ff(i,a,b) for(auto i=(a); i<=(b); ++i)
#define ffr(i,b,a) for(auto i=(b); i>=(a); --i)
#define nl "\n"
#define pb emplace_back
#define all(s) (s).begin(), (s).end()
 
using ll = long long;
 
inline void rf(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    if (fopen(file".inp","r")){
        freopen(file".inp","r",stdin);
        freopen(file".out","w",stdout);
    }
}
 
const ll BASE = 22071997LL;
const ll MODH = 1000000000LL + 19972207LL;
 
ll C[40][40];
 
ll comb(int n, int k){
    if(k<0 || k>n) return 0;
    return C[n][k];
}
 
ll S(int m, int V){
    if(V<m) return 0;
    if(V>2*m) V=2*m;
    return comb(V,m) - comb(V,m+1);
}
 
ll catalan(int n){
    return comb(2*n, n) / (n+1);
}
 
int main(){
    rf();
    // precompute C up to 36
    ff(i,0,36){
        C[i][0]=C[i][i]=1;
        ff(j,1,i-1) C[i][j]=C[i-1][j-1]+C[i-1][j];
    }
 
    int T; 
    if(!(cin>>T)) return 0;
    while(T--){
        int n; ll k;
        cin>>n>>k;                 // n <= 18
 
        ll cat = catalan(n);
        if(k>cat){ cout<<-1<<nl; continue; }
 
        vector<int> leftVals;
        int upper = 2*n-1;
        for(int m=n; m>=1; --m){
            int lo=m, hi=min(upper, 2*m-1);
            while(lo<hi){
                int mid=(lo+hi)>>1;
                if(S(m,mid) >= k) hi=mid;
                else lo=mid+1;
            }
            int v=lo;
            k -= S(m, v-1);
            leftVals.pb(v);
            upper = v-1;
        }
        sort(all(leftVals));
 
        vector<int> perm; perm.reserve(2*n);
        for(int i=(int)leftVals.size()-1;i>=0;--i) perm.pb(leftVals[i]);
 
        vector<int> mark(2*n+1,0);
        for(int x:leftVals) mark[x]=1;
        for(int x=2*n; x>=1; --x) if(!mark[x]) perm.pb(x);
 
        ll ans=0, pw=1;
        ff(i,1,2*n){
            pw = (pw * BASE) % MODH;
            ans = (ans + (ll)perm[i-1] * pw) % MODH;
        }
        cout<<ans<<nl;
    }
    return 0;
}
 
				Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAicGVybXV0YXRpb25zIgojZGVmaW5lIGZmKGksYSxiKSBmb3IoYXV0byBpPShhKTsgaTw9KGIpOyArK2kpCiNkZWZpbmUgZmZyKGksYixhKSBmb3IoYXV0byBpPShiKTsgaT49KGEpOyAtLWkpCiNkZWZpbmUgbmwgIlxuIgojZGVmaW5lIHBiIGVtcGxhY2VfYmFjawojZGVmaW5lIGFsbChzKSAocykuYmVnaW4oKSwgKHMpLmVuZCgpCgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCmlubGluZSB2b2lkIHJmKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgaWYgKGZvcGVuKGZpbGUiLmlucCIsInIiKSl7CiAgICAgICAgZnJlb3BlbihmaWxlIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3BlbihmaWxlIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQp9Cgpjb25zdCBsbCBCQVNFID0gMjIwNzE5OTdMTDsKY29uc3QgbGwgTU9ESCA9IDEwMDAwMDAwMDBMTCArIDE5OTcyMjA3TEw7CgpsbCBDWzQwXVs0MF07CgpsbCBjb21iKGludCBuLCBpbnQgayl7CiAgICBpZihrPDAgfHwgaz5uKSByZXR1cm4gMDsKICAgIHJldHVybiBDW25dW2tdOwp9CgpsbCBTKGludCBtLCBpbnQgVil7CiAgICBpZihWPG0pIHJldHVybiAwOwogICAgaWYoVj4yKm0pIFY9MiptOwogICAgcmV0dXJuIGNvbWIoVixtKSAtIGNvbWIoVixtKzEpOwp9CgpsbCBjYXRhbGFuKGludCBuKXsKICAgIHJldHVybiBjb21iKDIqbiwgbikgLyAobisxKTsKfQoKaW50IG1haW4oKXsKICAgIHJmKCk7CiAgICAvLyBwcmVjb21wdXRlIEMgdXAgdG8gMzYKICAgIGZmKGksMCwzNil7CiAgICAgICAgQ1tpXVswXT1DW2ldW2ldPTE7CiAgICAgICAgZmYoaiwxLGktMSkgQ1tpXVtqXT1DW2ktMV1bai0xXStDW2ktMV1bal07CiAgICB9CgogICAgaW50IFQ7IAogICAgaWYoIShjaW4+PlQpKSByZXR1cm4gMDsKICAgIHdoaWxlKFQtLSl7CiAgICAgICAgaW50IG47IGxsIGs7CiAgICAgICAgY2luPj5uPj5rOyAgICAgICAgICAgICAgICAgLy8gbiA8PSAxOAoKICAgICAgICBsbCBjYXQgPSBjYXRhbGFuKG4pOwogICAgICAgIGlmKGs+Y2F0KXsgY291dDw8LTE8PG5sOyBjb250aW51ZTsgfQoKICAgICAgICB2ZWN0b3I8aW50PiBsZWZ0VmFsczsKICAgICAgICBpbnQgdXBwZXIgPSAyKm4tMTsKICAgICAgICBmb3IoaW50IG09bjsgbT49MTsgLS1tKXsKICAgICAgICAgICAgaW50IGxvPW0sIGhpPW1pbih1cHBlciwgMiptLTEpOwogICAgICAgICAgICB3aGlsZShsbzxoaSl7CiAgICAgICAgICAgICAgICBpbnQgbWlkPShsbytoaSk+PjE7CiAgICAgICAgICAgICAgICBpZihTKG0sbWlkKSA+PSBrKSBoaT1taWQ7CiAgICAgICAgICAgICAgICBlbHNlIGxvPW1pZCsxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludCB2PWxvOwogICAgICAgICAgICBrIC09IFMobSwgdi0xKTsKICAgICAgICAgICAgbGVmdFZhbHMucGIodik7CiAgICAgICAgICAgIHVwcGVyID0gdi0xOwogICAgICAgIH0KICAgICAgICBzb3J0KGFsbChsZWZ0VmFscykpOwoKICAgICAgICB2ZWN0b3I8aW50PiBwZXJtOyBwZXJtLnJlc2VydmUoMipuKTsKICAgICAgICBmb3IoaW50IGk9KGludClsZWZ0VmFscy5zaXplKCktMTtpPj0wOy0taSkgcGVybS5wYihsZWZ0VmFsc1tpXSk7CgogICAgICAgIHZlY3RvcjxpbnQ+IG1hcmsoMipuKzEsMCk7CiAgICAgICAgZm9yKGludCB4OmxlZnRWYWxzKSBtYXJrW3hdPTE7CiAgICAgICAgZm9yKGludCB4PTIqbjsgeD49MTsgLS14KSBpZighbWFya1t4XSkgcGVybS5wYih4KTsKCiAgICAgICAgbGwgYW5zPTAsIHB3PTE7CiAgICAgICAgZmYoaSwxLDIqbil7CiAgICAgICAgICAgIHB3ID0gKHB3ICogQkFTRSkgJSBNT0RIOwogICAgICAgICAgICBhbnMgPSAoYW5zICsgKGxsKXBlcm1baS0xXSAqIHB3KSAlIE1PREg7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PGFuczw8bmw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=