#include using namespace std; constexpr int INF=1e9; struct MaxFlowGraph{ struct edge{int to,cap,rev;}; MaxFlowGraph(int n):G(n),_n(n){} void add_edge(int a,int b,int c){ assert(0<=a && a<_n); assert(0<=b && b<_n); G[a].push_back({b,c,G[b].size()}); G[b].push_back({a,0,G[a].size()-1}); } int flow(int s,int t){ int res=0; while(true){ used.assign(_n,false); int fw=dfs(s,t,INF); if(fw==0)break; res+=fw; } return res; } private: int _n; std::vector> G; std::vector used; int dfs(int v,int t,int f){ if(v==t)return f; used[v]=true; for(edge &e:G[v]){ if(used[e.to] || e.cap==0) continue; int fw=dfs(e.to,t,min(f,e.cap)); if(fw==0) continue; e.cap-=fw; G[e.to][e.rev].cap+=fw; return fw; } return 0; } }; int main(){ int W,N,M; cin>>W>>N; vector J(N); for(int i=0;i>J[i]; cin>>M; vector C(M); for(int i=0;i>C[i]; MaxFlowGraph G(N+M+2); int s=N+M,t=s+1; for(int i=0;i A(N,true); int Q; cin>>Q; for(int j=0;j>X; A[X-1]=false; } for(int j=0;j