#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char map[55][55];int num[1000],t,w,h;int dir[4][2]={{1,0},{0,-1},{-1,0},{0,1}};void dfs1(int x,int y){ int xx,yy,i; map[x][y]='*'; for(i=0;i<4;i++) { xx=x+dir[i][0]; yy=y+dir[i][1]; if(xx>=h||yy>=w||xx<0||yy<0||map[xx][yy]=='*')continue; if(map[xx][yy]=='X')dfs1(xx,yy); }}void dfs2(int x,int y){ int xx,yy,i; map[x][y]='.'; for(i=0;i<4;i++) { xx=x+dir[i][0]; yy=y+dir[i][1]; if(xx>=h||yy>=w||xx<0||yy<0||map[xx][yy]=='.')continue; if(map[xx][yy]=='X') { dfs1(xx,yy); num[t]++; } if(map[xx][yy]=='*') dfs2(xx,yy); }}int main(){ int i,j,n=0; while(~scanf("%d%d",&w,&h)&&w&&h) { memset(num,0,sizeof(num)); memset(map,'.',sizeof(map)); t=0; for(i=0;i<h;i++) { getchar(); for(j=0;j<w;j++) scanf("%c",&map[i][j]); } for(i=0;i<h;i++) for(j=0;j<w;j++) if(map[i][j]=='*') { dfs2(i,j); t++; } sort(num,num+t); printf("Throw %dn",++n); for(i=0;i<t-1;i++) printf("%d ",num[i]); printf("%dn",num[i]); printf("n"); } return 0;}