#include <cstdio> #include <cstring> #include <iostream> using namespace std; const int M=510; int m,n; int map[M][M], match[M], chk[M]; int dfs(int p) { int i; for(i=1;i<=m;i++) if( map[p][i] && chk[i]==0 ) { chk[i]=1; if( match[i]==0 || dfs( match[i] ) ) { match[i]=p; return 1; } } return 0; } int solve() { int i,res; for(i=1,res=0; i<=n; i++) { memset(chk,0,sizeof(chk)); res+=dfs(i); } return res; } int main() { // freopen("cin","r",stdin); int k,i,x,y; while(scanf("%d",&k) && k) { scanf("%d%d",&n,&m); memset(map,0,sizeof(map)); memset(match,0,sizeof(match)); for(i=0;i<k;i++) { scanf("%d%d",&x,&y); map[x][y]=1; } printf("%d\n",solve()); } return 0; }