#include <bits/stdc++.h>
using namespace std;
const long long INF = (long long)2e18 + 5;
const long long MOD = (long long)1e9 + 7;
const int MAXN = 55;
long long mul(long long x, long long y) {
  if (x == 0) return 0;
  if (y > INF / x) return INF;
  return x * y;
}
long long add(long long x, long long y) { return min(x + y, INF); }
long long n, k, cnt[MAXN], fac[MAXN], dp[MAXN][MAXN], way[MAXN];
vector<int> get_p(long long len, long long k) {
  vector<int> res, from(len + 1);
  res.push_back(len);
  for (int i = 1; i <= len; i++) {
    from[i] = i;
  }
  for (int i = 2; i <= len; i++) {
    int src = i;
    while (from[src] != src) {
      src = from[src];
    }
    int tgt = k / fac[max(0LL, len - i - 1)];
    for (int j = 1; j <= len; j++) {
      if (j != src && from[j] == j) {
        if (tgt == 0) {
          from[j] = i;
          res.push_back(j);
          break;
        } else {
          tgt--;
        }
      }
    }
    k %= fac[max(0LL, len - i - 1)];
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  fac[0] = cnt[0] = cnt[1] = 1;
  for (int i = 1; i < MAXN; i++) fac[i] = mul(fac[i - 1], i);
  for (int i = 2; i < MAXN; i++) cnt[i] = fac[i - 2];
  dp[0][0] = way[0] = 1;
  for (int i = 1; i < MAXN; i++) {
    for (int j = 1; j <= i; j++) {
      for (int k = 1; k <= i; k++) {
        dp[i][j] = add(dp[i][j], mul(dp[i - k][j - 1], cnt[k]));
      }
      way[i] = add(way[i], dp[i][j]);
    }
  }
  int tc;
  cin >> tc;
  while (tc--) {
    cin >> n >> k;
    k--;
    if (k >= way[n]) {
      cout << "-1\n";
      continue;
    }
    int put = 0;
    vector<int> ans;
    while (put < n) {
      long long seg, rem = n - put;
      for (seg = 1; seg <= rem; seg++) {
        long long tot = mul(cnt[seg], way[rem - seg]);
        if (k >= tot) {
          k -= tot;
        } else {
          break;
        }
      }
      vector<int> p = get_p(seg, k / way[rem - seg]);
      k %= way[rem - seg];
      for (int x : p) {
        ans.push_back(x + put);
      }
      put += seg;
    }
    for (int x : ans) {
      cout << x << ' ';
    }
    cout << '\n';
  }
  return 0;
}
