/*
一看就是最大匹配然后删边....
开始不会建图...总觉得有好多 分 ...
看了看题解
二分图嘛 按行列建图
某个点能放车 x连y
最后删掉这个匹配和边 看看能不能匹配
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 110
using namespace std;
int n,m,k,G[maxn][maxn],match[maxn],mx,ans,cas;
bool f[maxn];
void Clear(){
ans=mx=0;memset(G,0,sizeof(G));
memset(match,0,sizeof(match));
}
int Dfs(int u){
for(int v=1;v<=m;v++)
if(G[u][v]&&f[v]==0){
f[v]=1;
if(match[v]==0||Dfs(match[v])){
match[v]=u;return 1;
}
}
return 0;
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&k)){
Clear();int u,v;
for(int i=1;i<=k;i++){
scanf("%d%d",&u,&v);
G[u][v]=1;
}
for(int i=1;i<=n;i++){
memset(f,0,sizeof(f));
mx+=Dfs(i);
}
for(int i=1;i<=n;i++){
memset(f,0,sizeof(f));
int x=match[i];
G[x][i]=0;match[i]=0;
if(!Dfs(x)){
ans++;match[i]=x;//这个放if里面
}
G[x][i]=1;
}
printf("Board %d have %d important blanks for %d chessmen.\n",++cas,ans,mx);
}
return 0;
}