#include<stdio.h> #include<string.h> int map[510][510],vis[510],a[510],b[510],n,m,k; int f1(int u) { int v; for(v=1;v<=n;v++) { if(map[u][v] && !vis[v]) { vis[v]=1; if(!b[v] || f1(b[v])) { a[u]=v;b[v]=u;return 1; } } } return 0; } int f2() { int i,ans=0; for(i=1;i<=m;i++) { if(!a[i]) { memset(vis,0,sizeof(vis)); if(f1(i)) ans++; } } return ans; } int main() { int a1,b1; while(scanf("%d",&k)==1 && k) { scanf("%d%d",&m,&n); memset(map,0,sizeof(map)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); while(k--) { scanf("%d%d",&a1,&b1); map[a1][b1]=1; } printf("%d\n",f2()); } return 0; }