#include using namespace std; void solve(){ using ll=long long; ll n,m,k,p; cin>>n>>m>>k>>p; vector t(n),c(n),b(m),d(m),s(k); vector> g(k),g2(k); vector>> vp(k); map,int> mp2; for (int i=0;i>t[i]; for (int i=0;i>c[i],g2[--c[i]].push_back(t[i]); mp2[{c[i],t[i]}]=i; } for (int i=0;i>b[i]; for (int i=0;i>d[i]; g[--d[i]].push_back(b[i]); vp[d[i]].push_back({b[i],i}); } for (int i=0;i>s[i]; auto b2=b; sort(b2.begin(),b2.end()); for (int i=0;i1){ ll mid=(l+r)/2; ll cnt=0; for (int i=0;i=p) r=mid; else l=mid; } map mp; for (int i=0;i mp3; for (auto [val,idx]:vp[i]){ mp[val]=idx; mp3[val]=idx; } for (ll val:g2[i]){ if (mp3.count(r-val+s[i])){ cout<=0;i--){ for (ll val:g2[i]){ if (mp.count(r-val)){ cout< mp3; for (auto [val,idx]:vp[i]){ mp[val]=idx; mp3[val]=idx; } for (ll val:g2[i]){ if (mp3.count(r-val+s[i])){ cout<>t; while (t--) solve(); }