#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
const int N = 1e5;
const long long M = 1e18, S = (1LL << 59) - 1;
mt19937_64 rnd(349237901836100);
long long get_rand(long long l, long long r) {
assert(l <= r);
return l + rnd() % (r - l + 1);
}
vector<long long> random(vector<long long> p) {
shuffle(p.begin(), p.end(), rnd);
return p;
}
// Returns the immediate next number with same count of one bits, -1 on failure
long long next_one(long long n){
if (n == 0) return -1;
long long x = (n & -n);
long long left = (x + n);
long long right = ((n ^ left) / x) >> 2;
long long res = (left | right);
return res;
}
vector<long long> big(int n) {
set<long long> se;
se.insert(0);
vector<long long> p(n);
for (int i = 0; i < n; i++) {
long long z;
do {
z = get_rand(1, M);
} while(se.find(z) != se.end());
se.insert(z);
p[i] = z;
}
return p;
}
vector<long long> potential_yes1() {
int n;
if (rnd() % 2) n = get_rand(50, 59);
else n = get_rand(20, 49);
vector<long long> p(n);
vector<int> perm(59, 0);
iota(perm.begin(), perm.end(), 0);
shuffle(perm.begin(), perm.end(), rnd);
for (int i = 0; i < n; i++) {
p[i] = 1LL << perm[i];
for (int k = n; k < 59; k++) {
p[i] |= 1LL << (perm[k]);
}
}
if (rnd() % 4 == 0) p.push_back(S);
return random(p);
}
vector<long long> potential_yes2() {
int n;
if (rnd() % 2) n = get_rand(50, 59);
else n = get_rand(20, 49);
vector<long long> p(n);
vector<int> perm(59, 0);
iota(perm.begin(), perm.end(), 0);
shuffle(perm.begin(), perm.end(), rnd);
for (int i = 0; i < n; i++) {
p[i] = 1LL << perm[i];
for (int k = n; k < 59; k++) {
if (rnd() % 2) p[i] |= 1LL << (perm[k]);
}
}
if (rnd() % 4 == 0) p.push_back(S);
return random(p);
}
vector<long long> prefix_defense() {
int n;
if (rnd() % 2) n = get_rand(50, 59);
else n = get_rand(20, 49);
vector<long long> p(n);
vector<int> perm(59, 0);
iota(perm.begin(), perm.end(), 0);
shuffle(perm.begin(), perm.end(), rnd);
for (int i = 0; i < n; i++) {
p[i] = 1LL << perm[i];
for (int k = n; k < 59; k++) {
if (rnd() % 2) p[i] |= 1LL << (perm[k]);
}
for (int j = 0; j < i; j++) {
if (rnd() % 4 == 0) p[i] |= 1LL << perm[j];
}
}
if (rnd() % 3 == 0) reverse(p.begin(), p.end());
return random(p);
}
int32_t main() {
for (int t = 0; t < 2; t++) {
auto ttt = clock();
string zz = t < 10 ? "00" : "0";
string in = "input" + zz + to_string(t) + ".txt";
freopen(in.c_str(), "wb", stdout);
vector<vector<long long>> v;
if (t == 0) {
v.push_back({0});
v.push_back({1});
v.push_back({M});
v.push_back({S});
v.push_back({0, 1});
v.push_back({0, M});
v.push_back({0, S});
v.push_back({S, M});
v.push_back({1, M});
v.push_back({1, S});
v.push_back({1, 2, 7});
vector<long long> p;
for (int i = 0; i < 60; i++) p.push_back({1LL << i});
v.push_back(p);
v.push_back(random(p));
p.insert(p.begin() + 30, 0);
v.push_back(p);
v.push_back(random(p));
p.clear();
for (int i = 1; i < 60; i++) {
p.push_back({(1LL << i) - 1});
}
v.push_back(p);
v.push_back(random(p));
for (int i = 0; i < 250; i++) {
v.push_back(potential_yes1());
}
p.clear();
for (int i = 1; i <= N; i++) p.push_back(1LL * i * i * i * 1000);
v.push_back(random(p));
v.push_back(big(N));
int sum = 0;
for (auto x: v) sum += x.size();
p.clear();
long long nw = (1LL << 30) - 1;
while (sum < 300000) {
sum++;
p.push_back(nw);
nw = next_one(nw);
}
for (auto x: p) assert(__builtin_popcountll(x) == __builtin_popcountll(p[0]));
v.push_back(random(p));
}
else {
for (int i = 0; i < 300; i++) {
if (i < 200) v.push_back(potential_yes2());
else if (i < 297) v.push_back(prefix_defense());
else {
int sum = 0;
for (auto x: v) sum += x.size();
if (sum < 300000) v.push_back(big(min(100000, 300000 - sum)));
}
}
}
// assert constraints
assert(1 <= v.size() && v.size() <= 300);
cout << v.size() << '\n';
int sum = 0;
for (auto x: v) {
assert(1 <= x.size() && x.size() <= 100000);
sum += x.size();
cout << x.size() << '\n';
for (int i = 0; i < x.size(); i++) {
long long y = x[i];
assert(0 <= y && y <= M);
if (i) cout << ' ';
cout << y;
}
cout << '\n';
}
assert(1 <= sum && sum <= 300000);
cerr << "Test Case #" << t << " : " << fixed << setprecision(6) << 1.0 * (clock() - ttt) / CLOCKS_PER_SEC << "s\n";
}
return 0;
}