#pragma GCC optimize("Ofast") #pragma GCC optimize("avx2") #pragma GCC optimize("unroll-loops") #define ll int64_t #include using namespace std; const ll MAXN=1e4+1; ll n,m; ll cost[MAXN]; pair sortedActors[MAXN]; vector scenesOfActor[MAXN]; vector actorsOfScene[MAXN]; ll fs[MAXN]; ll fa[MAXN]; bool fl[MAXN]; bool fr[MAXN]; void solve(){ auto begtime=clock(); cin>>n>>m; for(ll i=1;i<=n;i++){ cin>>cost[i]; sortedActors[i].first=-cost[i]; sortedActors[i].second=i; } ll br,tActor; for(ll i=1;i<=m;i++){ cin>>br; for(ll j=0;j>tActor; scenesOfActor[tActor].push_back(i); actorsOfScene[i].push_back(tActor); } } vector v; sort(sortedActors+1,sortedActors+1+n); set > nextActors; nextActors.insert(sortedActors[1]); fa[sortedActors[1].second]=1; ll p=1; set,ll> > tSortedActors; for(ll i=1;i<=n;i++){ if(nextActors.empty()){ while(fa[sortedActors[p].second]==1) p++; nextActors.insert(sortedActors[p]); } tActor=nextActors.begin()->second; nextActors.erase(nextActors.begin()); tSortedActors.clear(); for(auto tScene : scenesOfActor[tActor]) if(fs[tScene]==0){ if(actorsOfScene[tScene].size()==1){ fs[tScene]=1; //cout< st; for(auto it : tSortedActors){ for(auto tScene : scenesOfActor[it.second]) if(fs[tScene]==2){ fs[tScene]=1; st.push(tScene); } } while(!st.empty()){ //cout<0){ for(auto tActor : actorsOfScene[v[i]]){ if(lb[tActor]==i) lb[tActor]=i+1; lb[tActor]=min(lb[tActor],i+1); rb[tActor]=max(rb[tActor],i+1); } for(auto tActor : actorsOfScene[v[i+1]]){ if(rb[tActor]==i+1) rb[tActor]=i; lb[tActor]=min(lb[tActor],i); rb[tActor]=max(rb[tActor],i); } swap(v[i],v[i+1]); } } } for(auto i : v) cout<>t; while(t--) solve(); return 0; }