/*
#include <stdio.h>
int map[50][50]={},n;
int t=0;
void dfs(int i,int j)
{
if(i<n&&i>=0&&j<n&&j>=0&&map[i][j]==1)
{
t++;
map[i][j]=-1;
dfs(i,j-1);
dfs(i,j+1);
dfs(i-1,j);
dfs(i+1,j);
}
}
int main()
{
int i,j,cnt=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%1d",&map[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(map[i][j]==1)
{
t=0;
dfs(i,j);
cnt++;
printf("%d ",t);
}
}
}
printf("%d",cnt);
return 0;
}
4024
4572
*/
//#include <stdio.h>
//int w,h;
//char map[101][101]={};
//void dfs(int i,int j)
//{
// if(i<w&&i>=0&&j<h&&j>=0&&map[i][j]=='L')
// {
// map[i][j]='k';
// dfs(i,j+1);
// dfs(i,j-1);
// dfs(i-1,j);
// dfs(i+1,j);
// dfs(i+1,j+1);
// dfs(i+1,j-1);
// dfs(i-1,j+1);
// dfs(i-1,j-1);
// }
//}
//int main()
//{
// int i,j,cnt=0;
// scanf("%d %d",&h,&w);
// for(i=0;i<w;i++)
// {
// for(j=0;j<h;j++)
// {
// scanf(" %c",&map[i][j]);
// }
// }
// for(i=0;i<w;i++)
// {
// for(j=0;j<h;j++)
// {
// if(map[i][j]=='L')
// {
// dfs(i,j);
// cnt++;
// }
// }
// }
// printf("%d",cnt);
//
// return 0;
//}
#include <stdio.h>
int m,n,k,t=0,tmp;
int arr[100]={};
int map[101][101]= {};
void dfs(int i,int j)
{
if(i<n&&i>=0&&j<m&&j>=0&&map[i][j]==0 )
{
t++;
map[i][j]=-1;
dfs(i,j-1);
dfs(i,j+1);
dfs(i-1,j);
dfs(i+1,j);
}
}
int main()
{
int i,j,r,cnt=0,a,b,c,d;
scanf("%d%d%d",&m,&n,&k);
for(r=0; r<k; r++)//
{
scanf("%d %d %d %d",&a,&b,&c,&d);
for(i=a; i<c; i++)
{
for(j=b; j<d; j++)
{
map[i][j]=1;
}
}
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%d ",map[i][j]);
}
printf("\n");
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(map[i][j]==0)
{
t=0;
dfs(i,j);
arr[cnt]=t;
cnt++;
}
}
}
printf("%d\n",cnt);
for(i=1;i<cnt;i++)
{
for(j=0;j<cnt-i;j++)
{
if(arr[j]>arr[j+1])
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
for(i=0;i<cnt;i++)
{
printf("%d ",arr[i]);
}
return 0;
}