program cuadromag;
uses crt;
var lado,ren,col,nummax,x,y,num,clr:integer;
    posicion:array[1..50,1..50] of integer;
begin
 textbackground(BLACK);
 textcolor(LIGHTRED);
 clrscr;
 randomize;
 write('lado del cuadrado magico: ');
 readln(lado);
 clrscr;
 for x:=1 to lado do
  for y:=1 to lado do
   posicion[x][y]:=0;
 nummax:=lado*lado;
 ren:=1;
 col:=lado div 2 + 1;
 clr:=9;
 for num:=1 to nummax do
 begin
  if posicion[col][ren]<>0 then
  begin
    ren:=ren+2;
    col:=col-1;
    if ren>lado then ren:=2;
    if col<1 then col:=lado;
  end;
  gotoxy(col*4,ren);
  textcolor(clr);
  clr:=clr+1;
  if clr >15 then clr:=9;
  write(num);
  posicion[col][ren]:=num;
  ren:=ren-1;
  col:=col+1;
  if ren<1 then ren:=lado;
  if col>lado then col:=1;
  sound(random(600)+40);
  delay(150);
  nosound;
 end;
 readln
end.