/*#include <stdio.h>
int arr[101][101]={}, x1, y1, x2, y2, area=0;
int main()
{
int i, j, k;
for(k=1;k<=4;k++)
{
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
for(i=x1;i<x2;i++)
{
for(j=y1;j<y2;j++)
{
arr[i][j]=1;
}
}
}
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
area+=arr[i][j];
}
}
printf("%d", area);
return 0;
}*/
#include <stdio.h>
int arr[101][101]={};
int area[2501]={};
int M, N, cnt=0;
void dfs(int i, int j)
{
if(i<0||j<0||i>=M||j>=N||arr[i][j]==1) return ;
area[cnt]++;
arr[i][j]=1;
dfs(i+1, j);
dfs(i, j+1);
dfs(i-1, j);
dfs(i, j-1);
}
int main()
{
int K, i, j, k, x1, y1, x2, y2;
scanf("%d %d %d", &N, &M, &K);
for(k=1;k<=K;k++)
{
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
for(i=x1;i<x2;i++)
{
for(j=y1;j<y2;j++)
{
arr[i][j]=1;
}
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(arr[i][j]==0)
{
cnt++;
dfs(i, j);
}
}
}
for(i=1;i<cnt;i++)
{
for(j=1;j<=cnt-i;j++)
{
if(area[j]>area[j+1])
{
area[0]=area[j];
area[j]=area[j+1];
area[j+1]=area[0];
}
}
}
printf("%d\n", cnt);
for(i=1;i<=cnt;i++)
printf("%d ", area[i]);
return 0;
}



