/*
//단지 수 세기 dfs 재귀
#include <stdio.h>
int map[25][25]= {},n,m=0;
int ar[]
void dfs(int i, int j)
{
if(i>=n || i<0 || j>=n || j<0 ||map[i][j]!=1)
return ;
map[i][j]=-1; //visited check
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j-1);
dfs(i,j+1);
}
void view()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%2d ",map[i][j]);
}
printf("\n");
}
printf("\n");
}
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)
{
// m=0;
dfs(i,j);
// printf("%d ",m);
cnt++;
// view();
}
}
}
printf("%d\n",cnt);
}
*/
/*
#include <stdio.h>
int map[25][25]={};
int danji[600]={}; //danji[t]= t번째 단지내집수
int b=0,n;
void dfs(int i, int j)
{
if (i>=n || i<0 || j>=n || j<0 || map[i][j]!=1)
{
return;
}
b++;
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,tmp=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 )
{
b=0;
cnt++;
dfs(i,j);
danji[cnt]=b;
}
}
}
//
for (i=1; i<cnt; i++)
{
for (j=1; j<=cnt-i; j++)
{
if (danji[j] > danji[j+1])
{
tmp=danji[j];
danji[j]=danji[j+1];
danji[j+1]=tmp;
}
}
}
//
printf("%d\n",cnt);
for(i=1;i<=cnt;i++)
{
printf("%d\n",danji[i]);
}
return 0;
}
*/
#include <stdio.h>
int map[101][101]= {};
int m,n,cnt=0,d=0;
int danji[5000]={};
void dfs(int i, int j)
{
if (i>=m|| i<0 || j>=n || j<0 || map[i][j]!=0)
return;
d++;
map[i][j]=-1;
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
}
int main()
{
int t,k,i,j,x,y,a,b,tmp=0;
scanf("%d %d %d",&m,&n,&k);
for(t=0; t<k; t++)
{
scanf("%d %d %d %d",&a,&b,&x,&y);
for(i=b;i<y;i++)
{
for(j=a;j<x;j++)
{
map[i][j]=1;
}
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(map[i][j]==0)
{
d=0;
cnt++;
dfs(i,j);
danji[cnt]=d;
}
}
}
for (i=1; i<cnt;i++)
{
for (j=1;j<=cnt-i;j++)
{
if (danji[j] > danji[j+1])
{
tmp=danji[j+1];
danji[j+1]=danji[j];
danji[j]=tmp;
}
}
}
printf("%d\n",cnt);
for (i=1; i<=cnt; i++)
{
printf("%d ",danji[i]);
}
//
/* for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",map[i][j]);
}
printf("\n");
}*/
}