#include "game.h"
#include <bits/stdc++.h>
using namespace std;
const int nx=3e5+5;
int n, k, l[nx], r[nx];
vector<int> in[nx], out[nx];
bool checknode(int u);
bool updateedge(int u, int v) // from u->v
{
if (r[v]<=l[u]) return 1;
int mdu=(l[u]+r[u])/2, mdv=(l[v]+r[v])/2;
if (r[v]<=mdu)
{
r[u]=mdu;
return checknode(u);
}
if (mdv+1<=l[u])
{
l[v]=mdv+1;
return checknode(v);
}
return 0;
}
bool checknode(int u)
{
bool res=0;
for (auto v:in[u]) res|=updateedge(v, u);
for (auto v:out[u]) res|=updateedge(u, v);
return res;
}
void init(int N, int K) {
n=N;
k=K;
for (int i=1; i<=k; i++) l[i]=r[i]=i;
for (int i=k+1; i<=n; i++) l[i]=0, r[i]=k+1;
}
int add_teleporter(int u, int v) {
u++, v++;
in[v].push_back(u);
out[u].push_back(v);
return updateedge(u, v);
}