#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 = max(next, 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);
}