#include <cstdio>
#include <algorithm>
#define Lmax 315
using namespace std;
struct grupa
{
int arie,cul;
};
grupa v[Lmax*Lmax];
int a[Lmax][Lmax],nr[Lmax][Lmax],L,C,N,nrgr;
int dx[]={-1,-1,0,1,1, 1, 0,-1};
int dy[]={ 0, 1,1,1,0,-1,-1,-1};
bool viz[Lmax][Lmax];
inline void Fill(int i, int j)
{
int t;
++v[nrgr].arie;
viz[i][j]=true;
for(t=0;t<8;++t)
if(a[i+dx[t]][j+dy[t]]==a[i][j] && !viz[i+dx[t]][j+dy[t]])
Fill(i+dx[t],j+dy[t]);
}
inline bool Cmp(const grupa A, const grupa B)
{
if(A.cul==B.cul)
return A.arie<B.arie;
return A.cul<B.cul;
}
int main()
{
int x1,x2,y1,y2,i,j,c,maxim=0;
freopen ("figuri.in","r",stdin);
freopen ("figuri.out","w",stdout);
scanf("%d%d%d", &L,&C,&N);
for(i=1;i<=L;++i)
for(j=1;j<=C;++j)
a[i][j]=1;
while(N--)
{
scanf("%d%d%d%d%d", &x1,&y1,&x2,&y2,&c);
x1+=L/2+1; y1+=C/2+1; x2+=L/2+1; y2+=C/2+1;
for(i=x1;i<=x2;++i)
for(j=y1;j<=y2;++j)
++nr[i][j];
--x2; --y2;
for(i=x1;i<=x2;++i)
for(j=y1;j<=y2;++j)
a[i][j]=c;
}
for(i=1;i<=L;++i)
for(j=1;j<=C;++j)
if(!viz[i][j])
{
++nrgr;
v[nrgr].cul=a[i][j];
Fill(i,j);
}
sort(v+1,v+nrgr+1,Cmp);
for(i=1;i<=nrgr;++i)
printf("%d %d\n", v[i].cul,v[i].arie);
for(i=1;i<=L;++i)
for(j=1;j<=C;++j)
maxim=max(maxim,nr[i][j]);
printf("%d\n", maxim+1);
return 0;
}