#include #include #define N 1005 #define M 505 #define CLR(a,v) memset(a,v,sizeof(a)) struct Edge { int v,next; }edge[N*M]; int ehead[N]; int ecnt; inline void AddEdge(int u,int v) { edge[ecnt]={v,ehead[u]}; ehead[u]=ecnt++; } int match[M][N]; int mcnt[N]; bool vis[M]; int limit; bool Find(int u) { for(int i=ehead[u];~i;i=edge[i].next) { int v=edge[i].v; if(vis[v])continue; vis[v]=true; if(mcnt[v]'9';c=getchar())if(c=='\n')return false; a=c-'0'; for(c=getchar();c>='0'&&c<='9';c=getchar())a=a*10+c-'0'; lof=c=='\n'; return true; } char s[20]; int main() { int n,m; while(scanf("%d%d",&n,&m),n) { CLR(ehead,-1);ecnt=0; for(int i=0;i