#include <bits/stdc++.h>
int T, n, m, x, t;
char s[1100];
bool ans;
void ask(char a0, char a1) {
  printf("? %c%c\n", a0, a1);
  fflush(stdout);
  scanf("%d", &m);
  while (m--) {
    scanf("%d", &x);
    s[x] = a0;
    s[x + 1] = a1;
  }
}
void dfs(int x) {
  if (ans) return;
  if (x == 3) {
    t++;
    if (t < 4) {
      printf("? %s\n", s + 1);
      fflush(stdout);
      scanf("%d", &m);
      for (int i = 1; i <= m; i++) scanf("%d", &x);
    }
    if (m || t == 4) {
      ans = 1;
      printf("! %s\n", s + 1);
      fflush(stdout);
      scanf("%d", &x);
    }
    return;
  }
  if (x == 1) {
    if (s[1])
      dfs(x + 1);
    else {
      s[1] = 'O';
      dfs(x + 1);
      s[1] = 'H';
      dfs(x + 1);
      s[1] = 0;
    }
  } else {
    if (s[n])
      dfs(x + 1);
    else {
      s[n] = 'C';
      dfs(x + 1);
      s[n] = 'O';
      dfs(x + 1);
      s[n] = 0;
    }
  }
}
void dfs2(int x) {
  if (ans) return;
  if (x == 3) {
    t++;
    if (t < 6) {
      printf("? %s\n", s + 1);
      fflush(stdout);
      scanf("%d", &m);
      for (int i = 1; i <= m; i++) scanf("%d", &x);
    }
    if (m || t == 6) {
      ans = 1;
      printf("! %s\n", s + 1);
      fflush(stdout);
      scanf("%d", &x);
    }
    return;
  }
  if (x == 1) {
    if (s[1])
      dfs2(x + 1);
    else {
      s[1] = 'O';
      dfs2(x + 1);
      s[1] = 'H';
      dfs2(x + 1);
      s[1] = 0;
    }
  } else {
    if (s[n])
      dfs2(x + 1);
    else {
      s[n] = 'C';
      dfs2(x + 1);
      s[n] = 'O';
      dfs2(x + 1);
      s[n] = 'H';
      dfs2(x + 1);
      s[n] = 0;
    }
  }
}
void wor() {
  scanf("%d", &n);
  for (int i = 0; i <= n + 1; i++) s[i] = 0;
  ans = 0;
  t = 0;
  if (n > 4) {
    ask('C', 'C');
    ask('C', 'H');
    ask('C', 'O');
    ask('O', 'H');
    ask('H', 'H');
    for (int i = 2; i <= n - 1; i++)
      if (!s[i]) s[i] = 'O';
    dfs(1);
    return;
  }
  ask('C', 'C');
  ask('C', 'H');
  ask('C', 'O');
  ask('O', 'H');
  if (s[2] && s[3]) {
    dfs2(1);
  } else {
    ask('H', 'H');
    for (int i = 2; i <= 3; i++)
      if (!s[i]) s[i] = 'O';
    if (s[2] == 'O' && s[3] == 'O') {
      printf("? OOO\n");
      fflush(stdout);
      scanf("%d", &m);
      while (m--) {
        scanf("%d", &x);
        s[x] = s[x + 1] = s[x + 2] = 'O';
      }
      if (!s[1]) s[1] = 'H';
      if (!s[4]) s[4] = 'C';
      printf("! %s\n", s + 1);
      fflush(stdout);
      scanf("%d", &x);
      return;
    }
    if (!s[1]) {
      s[1] = 'H';
      printf("? %s\n", s + 1);
      fflush(stdout);
      scanf("%d", &m);
      for (int i = 1; i <= m; i++) scanf("%d", &x);
      if (!m) s[1] = 'O';
    } else if (!s[4]) {
      s[4] = 'C';
      printf("? %s\n", s + 1);
      fflush(stdout);
      scanf("%d", &m);
      for (int i = 1; i <= m; i++) scanf("%d", &x);
      if (!m) s[4] = 'O';
    }
    printf("! %s\n", s + 1);
    fflush(stdout);
    scanf("%d", &x);
  }
}
int main() {
  scanf("%d", &T);
  while (T--) {
    wor();
  }
  return 0;
}
