#include <bits/stdc++.h>
#include "light.h"
using namespace std;
typedef long long int ll;
vector<ll> Positions;
pair<ll, vector<ll>> join(ll x)
{
ll s = Positions.back() + x;
vector<ll> Helper;
for(int i = Positions.size() - 1; i > 0; i--)
Helper.push_back(Positions[i] + x);
if(Helper.size() == 0)
Helper.push_back(s);
ll idx = Helper.back() - 1;
while(idx > 0) {
ll diff = s - idx;
if(diff < idx) {
Helper.push_back(idx - diff);
idx -= diff + 1;
} else {
Helper.push_back(1);
idx = 0;
}
}
reverse(Helper.begin(), Helper.end());
Positions = Helper;
return make_pair(x, Positions);
}
pair<ll, vector<ll>> leave(ll x)
{
ll s = Positions.back() - x;
vector<ll> Helper;
ll val = s;
int idx = Positions.size() - 1;
while(val > 1) {
Helper.push_back(val);
ll diff = s - val + 1;
ll next = max((ll)1, val - 1 - diff);
while(Positions[idx] >= val)
idx--;
if(Positions[idx] > next) {
ll pos = Positions[idx];
ll pos2 = Positions[idx-1];
ll diff2 = pos - pos2;
if(s - pos >= diff2)
val = next;
else
val = pos;
} else
val = next;
}
Helper.push_back(1);
reverse(Helper.begin(), Helper.end());
Positions = Helper;
return make_pair(x, Positions);
}
void prepare()
{
Positions.push_back(1);
}
// int main()
// {
// prepare();
// int q, op, val;
// cin >> q;
// while(q --> 0) {
// cin >> op >> val;
// if(op == 0) {
// auto [a, b] = join(val);
// cout << b.size() << "\n";
// for(auto e : b)
// cout << e << " ";
// cout << "\n";
// } else {
// auto [a, b] = leave(val);
// cout << b.size() << "\n";
// for(auto e : b)
// cout << e << " ";
// cout << "\n";
// }
// }
// }