#include #include #include #include #include #include #include #include #include #include #include #define LL long long #define inf 0x7ffffff #define pa pair #define pi 3.1415926535897932384626433832795028841971 using namespace std; inline LL read() { LL x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } inline void write(LL a) { if (a<0){printf("-");a=-a;} if (a>=10)write(a/10); putchar(a%10+'0'); } inline void writeln(LL a){write(a);printf("\n");} int a[100010]; struct edge{ int to,next; }e[100010]; int head[100010]; int dep[100010]; bool mrk[100100]; int n,cnt; inline void ins(int u,int v) { e[++cnt].to=v; e[cnt].next=head[u]; head[u]=cnt; } inline void dfs(int x) { if(mrk[x])return; mrk[x]=1; for (int i=head[x];i;i=e[i].next) if (!mrk[e[i].to]) { dep[e[i].to]=dep[x]+1; dfs(e[i].to); } } inline void work() { int fuckyou=0; n=read();cnt=0; memset(e,0,sizeof(e)); memset(head,0,sizeof(head)); memset(dep,0,sizeof(dep)); memset(mrk,0,sizeof(mrk)); for (int i=1;i