uses crt; const xl=13; yl=13; var a1:array[1..xl,1..yl] of integer; a2:array[1..xl,1..yl] of boolean; posl:array[1..xl*yl] of integer; dir:integer; x,y,i,j:integer; label CS; begin clrscr; for i:=1 to yl do begin for j:=1 to xl do begin a1[j,i]:=(i-1)*xl+j; a2[j,i]:=false; end; end; x:=1; y:=1; dir:=0; posl[1]:=(yl div 2)*xl+(yl div 2)+1; i:=xl*yl; repeat a2[x,y]:=true; posl[i]:=a1[x,y]; dec(i); CS:case dir of 0:if (x=xl) or a2[x+1,y] then begin dir:=1; goto CS; end else inc(x); 1:if (y=yl) or a2[x,y+1] then begin dir:=2; goto CS; end else inc(y); 2:if (x=1) or a2[x-1,y] then begin dir:=3; goto CS; end else dec(x); 3:if (y=0) or a2[x,y-1] then begin dir:=0; goto CS; end else dec(y); end; until (y=(yl div 2)+1) and (x=(xl div 2)+1); for i:=1 to xl*yl do write(posl[i],' '); readln; end.