#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5;
const long long lim = 1e18;
long long sz[nmax + 1];
string s, s1, s2, s3;
string sol;
char solve(int n, long long k) {
  if (n == 0) {
    return s[k - 1];
  }
  if (k - 1 < (long long)s1.size()) {
    return s1[k - 1];
  } else if (k - 1 < (long long)s1.size() + sz[n - 1]) {
    return solve(n - 1, k - (long long)s1.size());
  } else if (k - 1 < (long long)s1.size() + sz[n - 1] + (long long)s2.size()) {
    return s2[k - 1 - ((long long)s1.size() + sz[n - 1])];
  } else if (k - 1 <
             (long long)s1.size() + 2 * sz[n - 1] + (long long)s2.size()) {
    return solve(n - 1,
                 k - ((long long)s1.size() + sz[n - 1] + (long long)s2.size()));
  } else {
    return s3[k - 1 -
              ((long long)s1.size() + 2 * sz[n - 1] + (long long)s2.size())];
  }
}
int main() {
  int q;
  cin >> q;
  s = "What are you doing at the end of the world? Are you busy? Will you save "
      "us?";
  sz[0] = (int)s.size();
  s1 = "What are you doing while sending \"";
  s2 = "\"? Are you busy? Will you send \"";
  s3 = "\"?";
  for (int i = 1; i <= nmax; ++i)
    sz[i] = min(2 * sz[i - 1] + (long long)s1.size() + (long long)s2.size() +
                    (long long)s3.size(),
                lim);
  while (q--) {
    int n;
    long long k;
    cin >> n >> k;
    if (k > sz[n]) {
      sol += '.';
    } else {
      sol += solve(n, k);
    }
  }
  cout << sol << "\n";
  return 0;
}
