#include <bits/stdc++.h>
using namespace std;
template <typename T>
T read1() {
  T t = 0;
  cin >> t;
  return t;
}
int s;
char str[55];
void Q(const char str[]) { cout << "? " << str << endl; }
int main() {
  for (int T = read1<long long>(), v; T--; read1<long long>() || (T = 0)) {
    s = read1<long long>();
    memset(str, 0, sizeof(str));
    if (s != 4) {
      Q("CH");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'C', str[x + 1] = 'H';
      Q("CO");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'C', str[x + 1] = 'O';
      Q("CC");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'C', str[x + 1] = 'C';
      Q("HO");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'H', str[x + 1] = 'O';
      Q("OO");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'O', str[x + 1] = 'O';
      for (int i = 2; i < s; ++i)
        if (!str[i]) str[i] = 'H';
      if (str[1] && str[s]) {
        cout << "! " << str + 1 << endl;
        continue;
      }
      if (!str[1] && !str[s]) {
        str[1] = 'H';
        str[s] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[1] = 'O';
        str[s] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[1] = 'O';
        str[s] = 'C';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[1] = 'H';
        str[s] = 'C';
        cout << "! " << str + 1 << endl;
        continue;
      }
      if (!str[1]) {
        str[1] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[1] = 'O';
        cout << "! " << str + 1 << endl;
        continue;
      }
      str[s] = 'H';
      Q(str + 1);
      if (v = read1<long long>(), v) {
        ~v&& read1<long long>();
        cout << "! " << str + 1 << endl;
        continue;
      }
      str[s] = 'C';
      cout << "! " << str + 1 << endl;
      continue;
    } else {
      Q("CH");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'C', str[x + 1] = 'H';
      Q("CO");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'C', str[x + 1] = 'O';
      Q("CC");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'C', str[x + 1] = 'C';
      int o = 0, p = 0, t = 0;
      for (int i = 1; i <= 4; ++i)
        if (!str[i]) (o ? p : o) = i, ++t;
      if (!t) {
        cout << "! " << str + 1 << endl;
        continue;
      }
      if (t == 1) {
        str[o] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'O';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'C';
        cout << "! " << str + 1 << endl;
        continue;
      }
      if (t == 2) {
        str[o] = 'H';
        str[p] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'O';
        str[p] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'O';
        str[p] = 'C';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'H';
        str[p] = 'O';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'O';
        str[p] = 'O';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'H';
        str[p] = 'C';
        cout << "! " << str + 1 << endl;
        continue;
      }
      Q("HO");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'H', str[x + 1] = 'O';
      o = p = t = 0;
      for (int i = 1; i <= 4; ++i)
        if (!str[i]) (o ? p : o) = i, ++t;
      if (!t) {
        cout << "! " << str + 1 << endl;
        continue;
      }
      if (t == 1) {
        str[o] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'O';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'C';
        cout << "! " << str + 1 << endl;
        continue;
      }
      if (t == 2) {
        str[o] = 'H';
        str[p] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'O';
        str[p] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'O';
        str[p] = 'C';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'H';
        str[p] = 'O';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'O';
        str[p] = 'O';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[o] = 'H';
        str[p] = 'C';
        cout << "! " << str + 1 << endl;
        continue;
      }
      Q("OO");
      for (int m = read1<long long>(), x; m--;)
        str[x = read1<long long>()] = 'O', str[x + 1] = 'O';
      if (str[1]) {
        if (!str[3]) str[3] = 'H';
        if (str[4]) {
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[4] = 'H';
        Q(str + 1);
        if (v = read1<long long>(), v) {
          ~v&& read1<long long>();
          cout << "! " << str + 1 << endl;
          continue;
        }
        str[4] = 'C';
        cout << "! " << str + 1 << endl;
        continue;
      } else {
        str[2] = str[3] = 'H';
        Q("HHH");
        for (int m = read1<long long>(), x; m--;)
          str[x = read1<long long>()] = 'H', str[x + 1] = 'H', str[x + 2] = 'H';
        if (!str[1]) str[1] = 'O';
        if (!str[4]) str[4] = 'C';
        cout << "! " << str + 1 << endl;
        continue;
      }
    }
  }
  return 0;
}
