#include <bits/stdc++.h>
using namespace std;
const int di[] = {-1, 0, 1, 0};
const int dj[] = {0, 1, 0, -1};
const long long MOD = 1e9 + 7;
const long long INF = 1e14;
const double EPS = 1e-5;
const string sa = "What are you doing while sending \"";
const string sb = "\"? Are you busy? Will you send \"";
const string sc = "\"?";
const string sBase =
    "What are you doing at the end of the world? Are you busy? Will you save "
    "us?";
const long long a = sa.length(), b = sb.length(), c = sc.length(),
                base = sBase.length();
vector<long long> mem(1e5 + 5, -1);
long long f(int i) {
  if (i == 0) return base;
  if (mem[i] != -1) return mem[i];
  long long ret = a + b + c;
  if (ret > LLONG_MAX - f(i - 1) - f(i - 1)) return mem[i] = LLONG_MAX / 2;
  return mem[i] = ret + f(i - 1) + f(i - 1);
}
char query(long long l, long long r, long long k, int i) {
  if (i == 0) {
    return sBase[k - l];
  }
  if (k < l + a) {
    return sa[k - l];
  }
  if (k > r - c) {
    return sc[k - (r - c) - 1];
  }
  if (k >= l + a + f(i - 1) && k < l + a + f(i - 1) + b) {
    return sb[k - (l + a + f(i - 1))];
  }
  if (k >= l + a && k < l + a + f(i - 1)) {
    return query(l + a, l + a + f(i - 1) - 1, k, i - 1);
  }
  if (k >= l + a + f(i - 1) + b && k < l + a + f(i - 1) + b + f(i - 1)) {
    return query(l + a + f(i - 1) + b, l + a + f(i - 1) + b + f(i - 1) - 1, k,
                 i - 1);
  }
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0);
  for (int i = 0; i < 100000; i++) {
    f(i);
  }
  int q;
  cin >> q;
  while (q--) {
    long long n, k;
    cin >> n >> k;
    k--;
    if (k >= f(n))
      cout << ".";
    else
      cout << query(0, f(n) - 1, k, n);
  }
  cout << endl;
  cin.ignore(), cin.get();
}
