#include #include #include #include #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--) using namespace std; using namespace atcoder; using namespace __gnu_pbds; using ll=long long; using ld=long double; using vll=vector; using vvll=vector; using pll=pair; // using mint=modint; // template // using ordered_map=tree,rb_tree_tag,tree_order_statistics_node_update>; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); //aはN以上であれば見なくていい //操作順はaの昇順でもいい ll N,Q; cin>>N; vector>q(N); rep(i,0,N){ ll l,r,a; cin>>l>>r>>a; if(ana; rep(i,1,m){ auto [l,r]=q[a][i]; if(l<=curr&&r>curr)curr=r; else if(l>curr){ na.push_back({curl,curr}); curl=l; curr=r; } } na.push_back({curl,curr}); q[a]=na; } cin>>Q; setp; rep(i,0,Q){ ll x; cin>>x; p.insert({x,i}); } vll ans(Q,0); //昇順で操作を行います //aを取れないようなxであればmex(x)はもう決められます rep(a,0,N){ ll m=q[a].size(); if(m==0){ for(auto [x,i]:p){ ans[i]=a; } p.clear(); break; } ll j=0; auto [l,r]=q[a][j]; auto it=p.begin(); while(it!=p.end()){ auto [x,i]=*it; if(x