#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; int main() { int n, m; cin>>n>>m; list lst; vector::iterator> v(n+m); for(int i=0; i>a[i]>>b[i]>>k[i]; a[i]--; b[i]--; v[n+i]=lst.insert(next(v[c[b[i]]]), n+i); lst.insert(next(v[n+i]), -i-1); last[c[a[i]]]=0; pr[i]=c[a[i]]; c[a[i]]=n+i; d[n+i]=a[i]; last[c[a[i]]]=1; } int idx=0; int l[400040], r[400040], rev[400040]; int s[400040]; s[0]=0; for(auto x:lst){ if(x<0) r[-x-1]=idx; else{ l[x]=idx++; rev[l[x]]=x; s[idx]=s[idx-1]+last[x]; } } for(int i=0; is[r1]) ans=d[rev[lower_bound(s, s+n+m+1, k[i])-s-1]]; else if(k[i]<=s[l2]+s[r1]-s[l1]) ans=d[rev[lower_bound(s, s+n+m+1, k[i]+s[l1]-s[l2])-s-1]]; else ans=d[rev[lower_bound(s, s+n+m+1, k[i]-s[r1]+s[l1])-s-1]]; }else{ if(k[i]<=s[l1] || k[i]>s[l2]) ans=d[rev[lower_bound(s, s+n+m+1, k[i])-s-1]]; else if(k[i]<=s[l1]+s[l2]-s[r1]) ans=d[rev[lower_bound(s, s+n+m+1, k[i]+s[r1]-s[l1])-s-1]]; else ans=d[rev[lower_bound(s, s+n+m+1, k[i]-s[l2]+s[r1])-s-1]]; } cout<