#include <bits/stdc++.h>
using namespace std;
long long int gcd(long long int a, long long int b) {
  return (b == 0LL ? a : gcd(b, a % b));
}
long double dist(long double x, long double arayikhalatyan, long double x2,
                 long double y2) {
  return sqrt((x - x2) * (x - x2) +
              (arayikhalatyan - y2) * (arayikhalatyan - y2));
}
long long int S(long long int a) { return (a * (a + 1LL)) / 2; }
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
char vow[] = {'a', 'e', 'i', 'o', 'u'};
int dx[] = {1, -1, 0, 0, -1, -1, 1, 1, 0};
int dy[] = {0, 0, 1, -1, -1, 1, -1, 1, 0};
const int N = 5e5 + 30;
const long long int mod = 1e9 + 7;
const long double pi = acos(-1);
const int T = 238;
const long double e = 1e-13;
long long int bp(long long int a, long long int b = mod - 2LL) {
  long long int ret = 1;
  while (b) {
    if (b & 1) ret *= a, ret %= mod;
    a *= a;
    a %= mod;
    b >>= 1;
  }
  return ret;
}
ostream& operator<<(ostream& c, pair<int, int> a) {
  c << a.first << " " << a.second;
  return c;
}
struct pt {
  long long int x, y;
  int ind;
  int bl;
  bool operator==(const pt& a) { return ind == a.ind; }
  bool operator<(const pt& b) {
    if (x == b.x) return y < b.y;
    return x < b.x;
  }
};
int t, n, k;
int ask(int l1, int r1, int l2, int r2) {
  cout << "? " << r1 - l1 + 1 << " " << r2 - l2 + 1 << endl;
  for (int i = l1; i <= r1; i++) {
    cout << i << " ";
  }
  cout << endl;
  for (int i = l2; i <= r2; i++) {
    cout << i << " ";
  }
  cout << endl;
  string s;
  cin >> s;
  if (s[0] == 'W')
    exit(0);
  else if (s[0] == 'E')
    return 0;
  else if (s[0] == 'F')
    return 1;
  else
    return -1;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  ;
  cin >> t;
  for (int x = 0; x < t; x++) {
    cin >> n >> k;
    bool bl = false;
    for (int j = 0; j < 30; j++) {
      int i1 = abs((int)rnd()) % (n - 1) + 2;
      if (ask(1, 1, i1, i1) == -1) {
        cout << "! 1" << endl;
        bl = true;
        break;
      }
    }
    if (bl) continue;
    ;
    int l = -1, r = -1;
    for (int i = 1; i <= n; i *= 2) {
      if (2 * i > n)
        l = i + 1, r = n;
      else if (ask(1, i, i + 1, 2 * i)) {
        l = i + 1;
        r = 2 * i;
        break;
      }
    }
    if (l == -1) continue;
    int ans = r;
    while (l <= r) {
      int mid = (l + r) / 2;
      if (ask(1, mid - l + 1, l, mid)) {
        ans = mid;
        r = mid - 1;
      } else {
        l = mid + 1;
      }
    }
    cout << "! " << ans << endl;
  }
  return 0;
}
