#include <stdio.h>
int map[501][501]={};
int main()
{
int n,m,a,b,i,j;
scanf("%d %d",&n,&m);
for(i=0;i<m;i++){
scanf("%d %d",&a,&b);
map[b][a]=1;
}
}
#include <stdio.h>
int m,n,k,a[101][101]={},cnt[100]={},tcnt=0;
void dfs(int x,int y){
if(x<0||y<0||x>=m||y>=n||a[x][y]!=0) return ;
cnt[tcnt]++;
a[x][y]=1;
dfs(x-1,y);
dfs(x+1,y);
dfs(x,y-1);
dfs(x,y+1);
}
int main()
{
int b,c,d,e,i,j,ii,jj;
scanf("%d %d %d",&m,&n,&k);
for(j=1;j<=k;j++){
scanf("%d %d %d %d",&b,&c,&d,&e);
for(ii=c;ii<e;ii++){
for(jj=b;jj<d;jj++){
a[ii][jj]=1;
}
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(a[i][j]==0){
tcnt++;
dfs(i,j);
}
}
}
printf("%d\n",tcnt);
for(i=1;i<tcnt;i++){
for(j=0;j<tcnt-i+1;j++){
int t;
if(cnt[j]>cnt[j+1]){
t=cnt[j];
cnt[j]=cnt[j+1];
cnt[j+1]=t;
}
}
}
for(i=1;i<=tcnt;i++) printf("%d ",cnt[i]);
}