#include<stdio.h>#include<string.h>#define N 110int n,m,k,map[N][N],vis[N],match[N];void getmap(){int i,a,b,c;memset(map,0,sizeof(map));for(i=0;i<k;i++){scanf("%d%d%d",&a,&b,&c);if(!b||!c)continue; map[b][c]=1;}}int dfs(int x){int i;for(i=0;i<m;i++)if(map[x][i] && !vis[i]){vis[i]=1;if( !match[i] || dfs(match[i]) ){match[i]=x;return 1;}}return 0;}int main(){int cnt,i;while(scanf("%d",&n),n){scanf("%d%d",&m,&k);getmap();memset(match,0,sizeof(match));for(cnt=0,i=0;i<n;i++){memset(vis,0,sizeof(vis));if( dfs(i) ) cnt++;}printf("%dn",cnt);}return 0;}