#include <bits/stdc++.h>
using namespace std;
const long long logN = 20;
const long long M = 1000000007;
const long long INF = 1e12;
const long long N = 100005;
void solve() {
  long long n, k;
  cin >> n >> k;
  set<long long> s;
  while (s.size() < 30 and s.size() < (n - 1)) {
    long long i = rand() % n + 1;
    if (i != 1 and s.find(i) == s.end()) {
      s.insert(i);
      cout << "? 1 1" << endl;
      cout << 1 << endl;
      cout << i << endl;
      string gt;
      cin >> gt;
      if (gt == "SECOND") {
        cout << "! 1" << endl;
        return;
      }
    }
  }
  long long l = 2, r = 2;
  for (long long i = 0; i < 10; i++) {
    long long dif = (r - l + 1);
    cout << "? " << dif << " " << dif << endl;
    for (long long i = 1; i < dif + 1; i++) cout << i << " ";
    cout << endl;
    for (long long i = l; i < l + dif; i++) cout << i << " ";
    cout << endl;
    string s;
    cin >> s;
    if (s == "FIRST") break;
    l = r + 1;
    r = 2 * r;
    r = min(r, n);
  }
  while (r > l) {
    long long m = (l + r) / 2;
    long long dif = (m - l + 1);
    cout << "? " << dif << " " << dif << endl;
    for (long long i = 1; i < dif + 1; i++) cout << i << " ";
    cout << endl;
    for (long long i = l; i < l + dif; i++) cout << i << " ";
    cout << endl;
    string s;
    cin >> s;
    if (s == "EQUAL")
      l = m + 1;
    else
      r = m;
  }
  cout << "! " << l << endl;
  return;
}
int main() {
  long long no;
  cin >> no;
  while (no--) {
    solve();
  }
  return 0;
}
