#include #include using namespace std; using namespace atcoder; using ll = long long; using mint = modint998244353; using vi = vector; using vvi = vector; using vvvi = vector; using vll = vector; using vvll = vector; using vvvll = vector; using vmi = vector; using vvmi = vector; using vvvmi = vector; #define all(a) (a).begin(), (a).end() #define rep2(i, m, n) for (int i = (m); i < (n); ++i) #define rep(i, n) rep2(i, 0, n) #define drep2(i, m, n) for (int i = (m)-1; i >= (n); --i) #define drep(i, n) drep2(i, n, 0) using p = pair; vector

vp; void solve(){ ll n, k; cin >> n >> k; /*vector vs; rep2(i, 1, 10)rep(j, 10)rep(l, 10){ if(i == j || i == l || j == l)continue; string u = to_string(i); rep2(m, 1, n+1){ string v = ""; rep(b, m)v += to_string(j); vs.push_back(u + v + to_string(l)); } }sort(all(vs)); for(auto i : vs)cout << i << endl;*/ ll c = (k-1)/(8*n); ll w = k-1; w %= (8*n); auto [a, b] = vp[c]; vi v1; rep(i, b){ if(i != a)v1.push_back(i); } ll l1 = v1.size(); if(l1 * n > w){ cout << w/l1 + 3 << " " << a << " " << b << " " << v1[w%l1] << endl; return; } vi v2; rep2(i, b+1, 10){ if(i != a)v2.push_back(i); } ll l2 = v2.size(); w -= l1*n; cout << n+2 - w/l2 << " " << a << " " << b << " " << v2[w%l2] << endl; //cout << vp[c].first << " " << vp[c].second << " " << w << endl; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); rep2(i, 1, 10)rep(j, 10){ if(i == j)continue; vp.push_back({i, j}); }sort(all(vp)); int t; cin >> t; while(t--)solve(); return 0; }