#include #include #include #define N 300005 using namespace std; int end[N],go[N*2],next[N*2],value[N*2]; int q[N],deep[N],f[N][20],ans[N][20],x,y,n,Q,cnt,i,j; void add(int u,int v){go[++cnt]=v;next[cnt]=end[u];end[u]=cnt;} int LCA(int x,int y) { if (deep[x]>i)&1) x=f[x][i]; if (x==y) return x; for (int i=19;i>=0;i--) if (f[x][i]!=f[y][i]) x=f[x][i],y=f[y][i]; return f[x][0]; } void bfs() { int h=0,t=1;q[1]=1;deep[1]=0;f[1][0]=0; while (h