//#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 ss " "
#define pb emplace_back
#define fi first
#define se second
#define sz(s) (int)s.size()
#define all(s) (s).begin(), (s).end()
#define ms(a,x) memset(a, x, sizeof (a))
#define cn continue
#define re exit(0)
 
typedef long long ll;
typedef unsigned long long ull;
typedef __int128 i128;
 
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
inline void rf(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
    if(fopen(file".inp","r")){
        freopen(file".inp","r",stdin);
        freopen(file".out","w",stdout);
    }
}
 
static inline ull comb_capped(ull n, ull k, ull cap){
    if(k>n) return 0;
    k=min(k, n-k);
    if(k==0) return 1;
    i128 prod=1;
    for(ull i=1;i<=k;i++){
        ull num = n - (k - i);
        ull den = i;
        ull g = __gcd(num, den);
        num/=g; den/=g;
        if(den>1){
            ull g2 = __gcd((ull)((ull)(prod%den)), den);
            prod/=g2; den/=g2;
        }
        prod*= (i128)num;
        if(prod > (i128)cap) return cap+1;
    }
    return (ull)prod;
}
 
static inline ull pref_count(ull m, ull V, ull cap){
    if(V<m) return 0;
    if(V>2*m) V=2*m;
    ull num = 2*m - V + 1;
    ull den = m + 1;
    i128 thr = (i128)cap * den;
    ull limit = (ull)(thr / num) + 1;
    ull c = comb_capped(V, m, limit);
    if(c>limit) return cap+1;
    i128 val = (i128)c * num / den;
    if(val>(i128)cap) return cap+1;
    return (ull)val;
}
 
int main(){
    rf();
    const ll BASE = 22071997LL;
    const ll MODH = 1000000000LL + 19972207LL;
 
    int T; 
    if(!(cin>>T)) return 0;
    while(T--){
        ull n; unsigned long long k;
        cin>>n>>k;
 
        ull cat_all = pref_count(n, 2*n-1, k);
        if(cat_all<k){
            cout<<-1<<nl;
            cn;
        }
 
        vector<int> open_pos; open_pos.reserve(n);
        ull upper = 2*n-1;
        for(ull m=n; m>=1; --m){
            ull lo=m, hi=min(upper, 2*m-1);
            while(lo<hi){
                ull mid = (lo+hi)>>1;
                ull s = pref_count(m, mid, k);
                if(s>=k) hi=mid;
                else lo=mid+1;
            }
            ull v=lo;
            ull before = pref_count(m, v-1, k);
            k -= before;
            open_pos.pb((int)v);
            upper = v-1;
        }
        sort(all(open_pos));
 
        vector<int> perm; perm.reserve(2*n);
        for(int i=(int)open_pos.size()-1;i>=0;--i) perm.pb(open_pos[i]);
        vector<char> isA(2*n+1,0);
        for(int x:open_pos) isA[x]=1;
        for(ull x=1;x<=2*n;++x) if(!isA[x]) perm.pb((int)x);
 
        ll ans=0, pw=1;
        for(size_t i=1;i<=perm.size();++i){
            pw = (ll)((__int128)pw * BASE % MODH);
            ans = (ans + (ll)((__int128)perm[i-1]*pw % MODH)) % MODH;
        }
        cout<<ans<<nl;
    }
    return 0;
}
 
				Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAicGVybXV0YXRpb25zIgojZGVmaW5lIGZmKGksIGEsIGIpIGZvcihhdXRvIGk9KGEpOyBpPD0oYik7ICsraSkKI2RlZmluZSBmZnIoaSwgYiwgYSkgZm9yKGF1dG8gaT0oYik7IGk+PShhKTsgLS1pKQojZGVmaW5lIG5sICJcbiIKI2RlZmluZSBzcyAiICIKI2RlZmluZSBwYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHN6KHMpIChpbnQpcy5zaXplKCkKI2RlZmluZSBhbGwocykgKHMpLmJlZ2luKCksIChzKS5lbmQoKQojZGVmaW5lIG1zKGEseCkgbWVtc2V0KGEsIHgsIHNpemVvZiAoYSkpCiNkZWZpbmUgY24gY29udGludWUKI2RlZmluZSByZSBleGl0KDApCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIF9faW50MTI4IGkxMjg7CgptdDE5OTM3XzY0IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwppbmxpbmUgdm9pZCByZigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKICAgIGlmKGZvcGVuKGZpbGUiLmlucCIsInIiKSl7CiAgICAgICAgZnJlb3BlbihmaWxlIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3BlbihmaWxlIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQp9CgpzdGF0aWMgaW5saW5lIHVsbCBjb21iX2NhcHBlZCh1bGwgbiwgdWxsIGssIHVsbCBjYXApewogICAgaWYoaz5uKSByZXR1cm4gMDsKICAgIGs9bWluKGssIG4tayk7CiAgICBpZihrPT0wKSByZXR1cm4gMTsKICAgIGkxMjggcHJvZD0xOwogICAgZm9yKHVsbCBpPTE7aTw9aztpKyspewogICAgICAgIHVsbCBudW0gPSBuIC0gKGsgLSBpKTsKICAgICAgICB1bGwgZGVuID0gaTsKICAgICAgICB1bGwgZyA9IF9fZ2NkKG51bSwgZGVuKTsKICAgICAgICBudW0vPWc7IGRlbi89ZzsKICAgICAgICBpZihkZW4+MSl7CiAgICAgICAgICAgIHVsbCBnMiA9IF9fZ2NkKCh1bGwpKCh1bGwpKHByb2QlZGVuKSksIGRlbik7CiAgICAgICAgICAgIHByb2QvPWcyOyBkZW4vPWcyOwogICAgICAgIH0KICAgICAgICBwcm9kKj0gKGkxMjgpbnVtOwogICAgICAgIGlmKHByb2QgPiAoaTEyOCljYXApIHJldHVybiBjYXArMTsKICAgIH0KICAgIHJldHVybiAodWxsKXByb2Q7Cn0KCnN0YXRpYyBpbmxpbmUgdWxsIHByZWZfY291bnQodWxsIG0sIHVsbCBWLCB1bGwgY2FwKXsKICAgIGlmKFY8bSkgcmV0dXJuIDA7CiAgICBpZihWPjIqbSkgVj0yKm07CiAgICB1bGwgbnVtID0gMiptIC0gViArIDE7CiAgICB1bGwgZGVuID0gbSArIDE7CiAgICBpMTI4IHRociA9IChpMTI4KWNhcCAqIGRlbjsKICAgIHVsbCBsaW1pdCA9ICh1bGwpKHRociAvIG51bSkgKyAxOwogICAgdWxsIGMgPSBjb21iX2NhcHBlZChWLCBtLCBsaW1pdCk7CiAgICBpZihjPmxpbWl0KSByZXR1cm4gY2FwKzE7CiAgICBpMTI4IHZhbCA9IChpMTI4KWMgKiBudW0gLyBkZW47CiAgICBpZih2YWw+KGkxMjgpY2FwKSByZXR1cm4gY2FwKzE7CiAgICByZXR1cm4gKHVsbCl2YWw7Cn0KCmludCBtYWluKCl7CiAgICByZigpOwogICAgY29uc3QgbGwgQkFTRSA9IDIyMDcxOTk3TEw7CiAgICBjb25zdCBsbCBNT0RIID0gMTAwMDAwMDAwMExMICsgMTk5NzIyMDdMTDsKCiAgICBpbnQgVDsgCiAgICBpZighKGNpbj4+VCkpIHJldHVybiAwOwogICAgd2hpbGUoVC0tKXsKICAgICAgICB1bGwgbjsgdW5zaWduZWQgbG9uZyBsb25nIGs7CiAgICAgICAgY2luPj5uPj5rOwoKICAgICAgICB1bGwgY2F0X2FsbCA9IHByZWZfY291bnQobiwgMipuLTEsIGspOwogICAgICAgIGlmKGNhdF9hbGw8ayl7CiAgICAgICAgICAgIGNvdXQ8PC0xPDxubDsKICAgICAgICAgICAgY247CiAgICAgICAgfQoKICAgICAgICB2ZWN0b3I8aW50PiBvcGVuX3Bvczsgb3Blbl9wb3MucmVzZXJ2ZShuKTsKICAgICAgICB1bGwgdXBwZXIgPSAyKm4tMTsKICAgICAgICBmb3IodWxsIG09bjsgbT49MTsgLS1tKXsKICAgICAgICAgICAgdWxsIGxvPW0sIGhpPW1pbih1cHBlciwgMiptLTEpOwogICAgICAgICAgICB3aGlsZShsbzxoaSl7CiAgICAgICAgICAgICAgICB1bGwgbWlkID0gKGxvK2hpKT4+MTsKICAgICAgICAgICAgICAgIHVsbCBzID0gcHJlZl9jb3VudChtLCBtaWQsIGspOwogICAgICAgICAgICAgICAgaWYocz49aykgaGk9bWlkOwogICAgICAgICAgICAgICAgZWxzZSBsbz1taWQrMTsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bGwgdj1sbzsKICAgICAgICAgICAgdWxsIGJlZm9yZSA9IHByZWZfY291bnQobSwgdi0xLCBrKTsKICAgICAgICAgICAgayAtPSBiZWZvcmU7CiAgICAgICAgICAgIG9wZW5fcG9zLnBiKChpbnQpdik7CiAgICAgICAgICAgIHVwcGVyID0gdi0xOwogICAgICAgIH0KICAgICAgICBzb3J0KGFsbChvcGVuX3BvcykpOwoKICAgICAgICB2ZWN0b3I8aW50PiBwZXJtOyBwZXJtLnJlc2VydmUoMipuKTsKICAgICAgICBmb3IoaW50IGk9KGludClvcGVuX3Bvcy5zaXplKCktMTtpPj0wOy0taSkgcGVybS5wYihvcGVuX3Bvc1tpXSk7CiAgICAgICAgdmVjdG9yPGNoYXI+IGlzQSgyKm4rMSwwKTsKICAgICAgICBmb3IoaW50IHg6b3Blbl9wb3MpIGlzQVt4XT0xOwogICAgICAgIGZvcih1bGwgeD0xO3g8PTIqbjsrK3gpIGlmKCFpc0FbeF0pIHBlcm0ucGIoKGludCl4KTsKCiAgICAgICAgbGwgYW5zPTAsIHB3PTE7CiAgICAgICAgZm9yKHNpemVfdCBpPTE7aTw9cGVybS5zaXplKCk7KytpKXsKICAgICAgICAgICAgcHcgPSAobGwpKChfX2ludDEyOClwdyAqIEJBU0UgJSBNT0RIKTsKICAgICAgICAgICAgYW5zID0gKGFucyArIChsbCkoKF9faW50MTI4KXBlcm1baS0xXSpwdyAlIE1PREgpKSAlIE1PREg7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PGFuczw8bmw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=