#include const int Q=100006; int n,q; int lst[Q],val[2*Q],nxt[2*Q],nr; void add(int x, int y) { val[++nr]=y; nxt[nr]=lst[x]; lst[x]=nr; } int s[Q],f[Q]; int e[2*Q],ct; int lg[2*Q]; int h[Q]; int r[18][Q]; int lca(int a, int b) { int d,g; if(s[a]>1]+1; for(int i=1; i<=ct; i++) r[0][i]=e[i]; int to,to2; for(int k=1; k<=17; k++) { to=1<h[min]) min=l2; if(h[lr]>h[min]) min=lr; if(min==a || min==b) { printf("-1\n"); } else printf("%d\n",min); continue; */ if(lr==a) { if(h[l2]<=h[a] || l2==b) { printf("-1\n"); } else printf("%d\n",l2); } else if(lr==b) { if(h[l1]<=h[b] || l1==a) printf("-1\n"); else printf("%d\n",l1); } else { if(l1==a || l2==b) printf("-1\n"); else if(h[l1]<=h[lr] && h[l2]<=h[lr]) printf("%d\n",lr); else if(h[l1]>h[l2]) printf("%d\n",l1); else printf("%d\n",l2); } } } return 0; }