#include #include #include #include #include #define DN 1005 using namespace std; typedef vector::iterator it; int n,m,v[DN],w[DN],fw[DN],cl,cr,lft[DN],rgt[DN],r; map nr; vector gr[DN*DN]; bitset viz; void ins(int v,map &mp,int &cnt,int rev[]) { if(mp.find(v)==mp.end()) { mp[v]=++cnt; rev[cnt]=v; } } int c(int s) { if(viz[s]) return 0; viz[s]=1; for(it i=gr[s].begin(); i!=gr[s].end(); ++i) if(!lft[*i]) { lft[*i]=s; rgt[s]=*i; return 1; } for(it i=gr[s].begin(); i!=gr[s].end(); ++i) if(c(lft[*i])) { lft[*i]=s; rgt[s]=*i; return 1; } return 0; } int main() { //freopen("input.txt","r",stdin); cin>>n>>m; for(int i=1; i<=n; ++i) cin>>v[i]; for(int i=1; i<=m; ++i) cin>>w[i]; for(int i=1; i<=n; ++i) { for(int j=0; j<=m; ++j) { ins(v[i]-w[j],nr,cr,fw); gr[i].push_back(nr[v[i]-w[j]]); } } for(int ok=1;ok;) { ok=0; viz&=0; for(int i=1; i<=n; ++i) if(!rgt[i]) ok|=c(i); } for(int i=1; i<=n; ++i) r+=rgt[i]>0; cout<