#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; } int Ans(int l, int r) { if (l > r) return 0; int tot = get_ans(l, r); if (tot == 0) return 0; if (l == r) return tot * l; int mid = (l + r) >> 1; return Ans(l, mid) + Ans(mid + 1, r); } void solve() { int n; cin >> n; int ans = Ans(1, 10000); cout << 0 << ' ' << 1 << '\n'; cout << ans << '\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; }