#include <bits/stdc++.h>
using namespace std;
const int max4 = 10004;
const int maxx = 100005;
const int max6 = 1000006;
const int lg5 = 17;
const int INF = 2 * 1000000007;
const long long INFLL = 4LL * 1000000000 * 1000000000;
int powmod(int a, int b, int mod) {
  int res = 1;
  a %= mod;
  for (; b; b >>= 1) {
    if (b & 1) {
      res = 1LL * res * a % mod;
    }
    a = 1LL * a * a % mod;
  }
  return res;
}
int gcd(int a, int b) {
  while (b > 0) {
    int t = a % b;
    a = b, b = t;
  }
  return a;
}
int lcm(int a, int b) { return (a / gcd(a, b)) * b; }
int is_prime(int n) {
  if (n <= 1 || n > 3 && (n % 2 == 0 || n % 3 == 0)) return 0;
  for (int i = 5, t = 2; i * i <= n; i += t, t = 6 - t)
    if (n % i == 0) return 0;
  return 1;
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  int T;
  cin >> T;
  while (T--) {
    int n;
    cin >> n;
    cout << "1 " << n - 1 << " ";
    for (int i = 1; i <= n; i++) {
      cout << i << " ";
    }
    cout << '\n' << flush;
    int mx;
    cin >> mx;
    int l = 2, r = n, best;
    while (r - l >= 0) {
      int mid = (l + r) >> 1;
      cout << "1 " << mid - 1 << " ";
      cout << 1 << " ";
      for (int i = 2; i <= mid; i++) {
        cout << i << " ";
      }
      cout << '\n' << flush;
      int x;
      cin >> x;
      if (x == mx) {
        best = mid;
        r = mid - 1;
      } else {
        l = mid + 1;
      }
    }
    cout << 1 << " " << n - 1 << " ";
    cout << best << " ";
    for (int i = 1; i <= n; i++) {
      if (i != best) {
        cout << i << " ";
      }
    }
    cout << '\n' << flush;
    int res;
    cin >> res;
    cout << -1 << " " << res << '\n';
    cout << flush;
  }
  return 0;
}
