program rekurzia2;
uses crt;

var stlpec,maximum:integer;

procedure check;
begin

  if stlpec=80 then
  begin

    readln;
    clrscr;
    stlpec:=1;

  end;

end;

procedure pistext(vzdialenost,max:integer);
begin

  {Najprv spravime jedno okrajova Acko}
  gotoxy(stlpec,vzdialenost);
  write('A');
  stlpec:=stlpec+1;

  {Procedura check sluzi len nato, ze kontroluje, ci nahodou
  stlpec nevybehol z obrazovky. AK sa tak stalo, tak vas necha
  pozret si ju a zmaze ju a zacne kreslit odznova z lava}
  check;

  {Ak niesme na maxime, tak kreslime prvy hrb}
  if vzdialenost<maximum then pistext(vzdialenost+1,max);

  {Teraz dve medzihrbove Acka...}
  gotoxy(stlpec,vzdialenost);
  write('A');
  stlpec:=stlpec+1;

  check;

  gotoxy(stlpec,vzdialenost);
  write('A');
  stlpec:=stlpec+1;

  check;

  {A krslime druhy hrb}
  if vzdialenost<maximum then pistext(vzdialenost+1,max);

  gotoxy(stlpec,vzdialenost);
  write('A');
  stlpec:=stlpec+1;

  check;

  {A teraz sme vybehli s aktualneho hrbu a vraciame sa o uroven nizsie}

end;

begin

  write('Zadaj maximalnu vzdialenost (ak das viac ako 5 tak sa bude vykreslovac cez viac obrazoviek): ');

  readln(maximum);

  {Tento prikaz mozno nepoznate, nerobi nic ine ako zmaze obrazovku}
  clrscr;

  stlpec:=1;

  {V premennej stlpec sa pamata, na ktore miesto obrazovky - ako daleko
  od laveho okraja monitora sa ma vykreslovat. Vzdy, ked vykreslime
  Acko tak sa posunie o jeden...}

  {A zacneme rekurzivne pisanie textu...
  Funguje to tak, ze nakresli hrb a ked este nieje na maxime, tak
  tomu hrbu nakresli dva mensie hrby a takto az po maximum
  }

  pistext(1,maximum);

  readln;


end.