#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e5 +5;
struct DSU
{
long long lab[MaxN];
void init()
{
memset(lab, -1, sizeof(lab));
}
long long get_root(long long u)
{
if(lab[u]<0) return u;
return lab[u]=get_root(lab[u]);
}
bool check(long long u, long long v)
{
return get_root(u)==get_root(v);
}
void unite(long long u, long long v)
{
long long x = get_root(u), y = get_root(v);
if(x==y) return;
if(lab[x]>lab[y]) swap(x,y); // > hơn do lab[root] luôn âm
lab[x]+=lab[y];
lab[y]=x;
return ;
}
} dsu;
void input()
{
}
void solve()
{
dsu.init();
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIE1heE4gPSAxZTUgKzU7CnN0cnVjdCBEU1UKewogICAgbG9uZyBsb25nIGxhYltNYXhOXTsKICAgIHZvaWQgaW5pdCgpCiAgICB7CiAgICAgICAgbWVtc2V0KGxhYiwgLTEsIHNpemVvZihsYWIpKTsKICAgIH0KICAgIGxvbmcgbG9uZyBnZXRfcm9vdChsb25nIGxvbmcgdSkKICAgIHsKICAgICAgICBpZihsYWJbdV08MCkgcmV0dXJuIHU7CiAgICAgICAgcmV0dXJuIGxhYlt1XT1nZXRfcm9vdChsYWJbdV0pOwogICAgfQogICAgYm9vbCBjaGVjayhsb25nIGxvbmcgdSwgbG9uZyBsb25nIHYpCiAgICB7CiAgICAgICAgcmV0dXJuIGdldF9yb290KHUpPT1nZXRfcm9vdCh2KTsKICAgIH0KICAgIHZvaWQgdW5pdGUobG9uZyBsb25nIHUsIGxvbmcgbG9uZyB2KQogICAgewogICAgICAgIGxvbmcgbG9uZyB4ID0gZ2V0X3Jvb3QodSksIHkgPSBnZXRfcm9vdCh2KTsKICAgICAgICBpZih4PT15KSByZXR1cm47CiAgICAgICAgaWYobGFiW3hdPmxhYlt5XSkgc3dhcCh4LHkpOyAvLyA+IGjGoW4gZG8gbGFiW3Jvb3RdIGx1w7RuIMOibQogICAgICAgIGxhYlt4XSs9bGFiW3ldOwogICAgICAgIGxhYlt5XT14OwogICAgICAgIHJldHVybiA7CiAgICB9Cn0gZHN1Owp2b2lkIGlucHV0KCkKewp9CnZvaWQgc29sdmUoKQp7CiAgICBkc3UuaW5pdCgpOwp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBpbnB1dCgpOwogICAgc29sdmUoKTsKfQo=