#include <bits/stdc++.h>
#pragma GCC optimize("O2")
using namespace std;
const int MAX = 1e3 + 5;
const long long MAX2 = 11;
const long long MOD = 1000000007;
const long long MOD2 = 1000005329;
const long long INF = 2e18;
const int dr[] = {1, 0, -1, 0, 1, 1, -1, -1, 0};
const int dc[] = {0, 1, 0, -1, 1, -1, 1, -1, 0};
const double pi = acos(-1);
const double EPS = 1e-9;
const int block = 2000;
int tc, n, k, lp, id, le, ri, mid, a, b;
bool vis[MAX];
set<int> batu, rem;
vector<int> qu;
string s;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  srand(time(NULL));
  cin >> tc;
  while (tc--) {
    cin >> n >> k;
    memset(vis, 0, sizeof vis);
    batu.clear();
    lp = min(30, n - 1);
    a = 1, vis[1] = 1, batu.insert(1);
    for (long long i = 1; i <= lp; ++i) {
      do {
        b = rand() % n + 1;
      } while (vis[b]);
      vis[b] = 1;
      cout << "? 1 1" << endl;
      cout << a << endl << b << endl;
      cin >> s;
      if (s[0] == 'S')
        batu.clear(), batu.insert(b), a = b;
      else if (s[0] == 'E')
        batu.insert(b);
    }
    id = 1;
    while (1) {
      qu.clear();
      while (id <= n && qu.size() != batu.size()) {
        if (!batu.count(id)) qu.push_back(id);
        ++id;
      }
      lp = qu.size();
      cout << "? " << lp << ' ' << lp << endl;
      for (auto i : qu) cout << i << ' ';
      cout << endl;
      for (auto i : batu) {
        cout << i << ' ';
        --lp;
        if (!lp) break;
      }
      cout << endl;
      cin >> s;
      if (s[0] == 'E')
        for (auto i : qu) batu.insert(i);
      else {
        le = 0, ri = qu.size() - 1;
        while (le != ri) {
          mid = le + ri >> 1;
          lp = mid - le + 1;
          cout << "? " << lp << ' ' << lp << endl;
          for (long long i = le; i <= mid; ++i) cout << qu[i] << ' ';
          cout << endl;
          for (auto i : batu) {
            cout << i << ' ';
            --lp;
            if (!lp) break;
          }
          cout << endl;
          cin >> s;
          if (s[0] == 'E')
            le = mid + 1;
          else
            ri = mid;
        }
        cout << "! " << qu[le] << endl;
        break;
      }
    }
  }
  return 0;
}
