#include<stdio.h>
char map[102][102]= {};
int cnt=0;
void dfs(int x, int y)
{
if(map[x][y]=='L')
{
map[x][y]='E';
dfs(x,y+1);
dfs(x,y-1);
dfs(x+1,y);
dfs(x-1,y);
dfs(x+1,y+1);
dfs(x+1,y-1);
dfs(x-1,y+1);
dfs(x-1,y-1);
}
}
int main()
{
int w,h;
int i,j;
scanf("%d %d", &h, &w);
for(i=1; i<=w; i++)
{
for(j=1; j<=h; j++)
{
scanf(" %c", &map[i][j]);
}
}
for(i=1; i<=w; i++)
{
for(j=1; j<=h; j++)
{
if(map[i][j]=='L')
{
dfs(i,j);
cnt++;
}
}
}
// for(i=1; i<=w; i++)
// {
// for(j=1; j<=h; j++)
// {
// printf("%c ", map[i][j]);
// }
// printf("\n");
// }
printf("%d", cnt);
}
#include<stdio.h>
int map[102][102]= {},temp;
int part=0,cnt=0,home[102]= {0};
int sort()
{
int i,j;
for(i=1; i<=cnt; i++)
{
for(j=1; j<cnt; j++)
{
if(home[j]>home[j+1])
{
temp = home[j];
home[j] = home[j+1];
home[j+1] = temp;
}
}
}
}
void dfs(int x, int y)
{
if(map[x][y]==0)
{
map[x][y]==-1;
part++;
dfs(x+1,y);
dfs(x-1,y);
dfs(x,y+1);
dfs(x,y-1);
}
}
int main()
{
int m,n,k,x,x1,x2,y,y1,y2;
int i,j;
scanf("%d %d %d",&m, &n, &k);
for(i=0; i<k; i++)
{
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
for(x=x1+1; x<=x2; x++)
{
for(y=y1+1; y<=y2; y++)
{
map[y][x] = 1;
}
}
}
for(i=m+1; i>=0; i--)
{
for(j=0; j<=n+1; j++)
{
map[0][j]=1;
map[m+1][j]=1;
map[i][0]=1;
map[i][n+1]=1;
printf("%d ",map[i][j]);
}printf("\n");
}
for(i=m; i>=1; i--)
{
for(j=1; j<=n; j++)
{
if(map[i][j]==0)
{
part=0;
dfs(i,j);
cnt++;
home[cnt]=part;
}
}
}
printf("%d", cnt);
sort();
for(i=1;i<=cnt;i++)
{
printf("%d ", home[i]);
}
}