#include <bits/stdc++.h>
using namespace std;
#pragma GCC target("avx2")
#pragma GCC optimization("O2")
#pragma GCC optimization("unroll-loops")
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
string str =
    "What are you doing at the end of the world? Are you busy? Will you save "
    "us?";
string F = "What are you doing while sending \"";
string S = "\"? Are you busy? Will you send \"";
string T = "\"?";
const int N = 100005;
long long dp[N];
long long n, k;
void rec(long long pos, long long got) {
  if (pos == 0) {
    int in = k - got;
    if (in <= str.size()) {
      cout << str[in - 1];
    } else {
      cout << ".";
    }
    return;
  }
  if (got + F.size() >= k) {
    int in = k - got;
    cout << F[in - 1];
    return;
  }
  got += F.size();
  if (got + dp[pos - 1] >= k) {
    rec(pos - 1, got);
    return;
  }
  got += dp[pos - 1];
  if (got + S.size() >= k) {
    int in = k - got;
    cout << S[in - 1];
    return;
  }
  got += S.size();
  if (got + dp[pos - 1] >= k) {
    rec(pos - 1, got);
    return;
  }
  got += dp[pos - 1];
  if (got + T.size() >= k) {
    int in = k - got;
    cout << T[in - 1];
    return;
  }
}
int main() {
  dp[0] = str.size();
  for (int i = 1; i < N; i++) {
    dp[i] = F.size() + dp[i - 1] + S.size() + dp[i - 1] + T.size();
    dp[i] = min(dp[i], 1000000000000000005LL);
  }
  int q;
  cin >> q;
  while (q--) {
    cin >> n >> k;
    if (k > dp[n])
      cout << ".";
    else
      rec(n, 0);
  }
}
