#include #define uint128 __uint128_t #define int128 __int128 #define ld long double #define ll long long #define ull unsigned ll #define uint unsigned int #define sint short int #define llong ll #define ullong ull #define ldouble ld #define eb emplace_back #define pub push_back #define pob pop_back #define puf push_front #define pof pop_front #define fst first #define snd second #define pii pair #define pil pair #define pli pair #define pll pair #define tiii tuple #define pld pair #define vi vector #define vll vector #define all(x) x.begin(), x.end() using namespace std; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); ll RandInt(ll B) { return (ull)rng() % B; } ll floor_div(ll x, ll y) { assert(y != 0); if (y < 0) { y = -y; x = -x; } if (x >= 0) return x / y; return (x + 1) / y - 1; } ll ceil_div(ll x, ll y) { assert(y != 0); if (y < 0) { y = -y; x = -x; } if (x <= 0) return x / y; return (x - 1) / y + 1; } template T sqr(T x) { return x * x; } int get_ans(int l, int r) { cout << 10000 << ' ' << r - l + 1 << '\n'; for(int i = l; i <= r; ++i) cout << i - 1 << ' '; cout << '\n'; cout.flush(); int ans; cin >> ans; return ans; } void solve() { int n; cin >> n; int l = 1, r = 10000; while (l < r) { int mid = (l + r) >> 1; if (get_ans(l, mid) == 1) r = mid; else l = mid + 1; } cout << 0 << ' ' << 1 << '\n'; cout << l << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int tests = 1; //cin >> tests; for(int test = 1; test <= tests; ++test) { solve(); } return 0; }