#include <bits/stdc++.h>
using namespace std;
const long long int maximum_no = 1e18 + 1;
string A, B, C, curr;
long long int a, b, c, f[100005];
char solve(int n, long long int k) {
  if (n == 0) {
    if (k > f[0]) return '.';
    return curr[k - 1];
  }
  if (k <= a) return A[k - 1];
  if (k <= a + f[n - 1]) return solve(n - 1, k - a);
  if (k <= a + f[n - 1] + b) return B[k - a - f[n - 1] - 1];
  if (k <= a + f[n - 1] + b + f[n - 1])
    return solve(n - 1, k - a - f[n - 1] - b);
  if (k <= a + f[n - 1] + b + f[n - 1] + c)
    return C[k - (a + f[n - 1] + b + f[n - 1]) - 1];
  return '.';
}
int n, q;
long long int k;
int main() {
  A = "What are you doing while sending \"";
  B = "\"? Are you busy? Will you send \"";
  C = "\"?";
  curr =
      "What are you doing at the end of the world? Are you busy? Will you save "
      "us?";
  f[0] = curr.length();
  a = A.length();
  b = B.length();
  c = C.length();
  for (int i = 1; i <= 100000; i++) {
    f[i] = min(maximum_no, a + f[i - 1] + b + f[i - 1] + c);
  }
  string ans = "";
  scanf("%d", &q);
  while (q--) {
    scanf("%d %lld", &n, &k);
    if (f[n] < k)
      ans.push_back('.');
    else
      ans.push_back(solve(n, k));
  }
  cout << ans;
  return 0;
}
