Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <cstdlib>
- #include <iomanip>
- #include <sstream>
- #include <cstdio>
- #include <bitset>
- #include <vector>
- #include <queue>
- #include <cmath>
- #include <stack>
- #include <set>
- #include <map>
- #define ft first
- #define sd second
- #define pb push_back
- #define pf push_front
- #define mk make_pair
- #define all(c) (c).begin(), (c).end()
- #define SWS ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
- #define rfile freopen("input.txt", "r", stdin)
- #define wfile freopen("output.txt", "w", stdout)
- #define files rfile; wfile
- #define DEBUG_VAR(x) #x << " = " << x << ";"
- #define DEBUG 1
- typedef long long ll;
- typedef unsigned long long ull;
- using namespace std;
- const int Z = 3 * (int)1e5 + 111;
- const int INF = (int)1e9 + 111;
- const int MODF = (int)1e9 + 7;
- int ask(int v, int l, int r) {
- int x;
- cout << 1 << ' ' << r - l + 1 - (v >= l && v <= r) << ' ' << v << ' ';
- for (int i = l; i <= r; i++)
- if (i != v)
- cout << i << ' ';
- cout << endl;
- cin >> x;
- return x;
- }
- int ans, big;
- void find(int v, int l, int r) {
- if (r == l) {
- ans = l;
- return;
- }
- int mid = (l + r) / 2;
- int left_ans = ask(v, l, mid);
- if (left_ans == big) {
- find(v, l, mid);
- return;
- }
- find(v, mid + 1, r);
- }
- int main() {
- SWS;
- int t;
- cin >> t;
- while (t--) {
- int n;
- cin >> n;
- ans = 0;
- big = ask(1, 2, n);
- find(1, 2, n);
- cout << "-1 " << ask(ans, 1, n) << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement