{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+} {$M 65000,0,655360} var map : array [0..51,0..51] of char; r : array [1..2500] of integer; rnum : integer; f : text; aa,l,i, w, h, che : integer; procedure chest(x,y : integer); begin if map[y,x]='X' then begin map[y,x] := '*'; chest(x,y-1); chest(x,y+1); chest(x-1,y); chest(x+1,y); end; end; procedure find(x,y : integer); begin if map[y,x]<>'.' then begin if map[y,x]='X' then begin inc(che); chest(x,y); end; if map[y,x]='*' then begin map[y,x] := '.'; find(x,y-1); find(x,y+1); find(x-1,y); find(x+1,y); end; end; end; procedure sort; var l,i,t : integer; begin for i:=1 to rnum-1 do for l:=i+1 to rnum do if r[i]>r[l] then begin t:=r[i]; r[i]:=r[l]; r[l]:=t end; end; procedure init; begin fillchar(map,52*52,'.'); rnum := 0; end; begin assign(f, 'dice.in'); reset(f); readln(f,w,h); aa:=0; while ((w<>0) and (h<>0)) do begin init; for i:=1 to h do begin for l:=1 to w do read(f,map[i,l]); readln(f); end; for i:=1 to h do begin for l:=1 to w do begin che:=0; find(l,i); if che<>0 then begin inc(rnum); r[rnum]:=che; end; end; end; sort; inc(aa); writeln('Снимок #',aa); for i:=1 to rnum-1 do write(r[i],' '); write(r[rnum]); readln(f,w,h); if (w<>0) and (h<>0) then begin writeln; end; WriteLn end; close(f); end.