{ Program vypise vsechny permutace N prvku }
Const N = 3;
Type TMnozina = Record
                  A : Array[1 .. N] Of Char;
                  Poc : Integer;
                End;
Var M : TMnozina;
    S : String;


Procedure Permutuj(Var Prefix : String; Var M : TMnozina);
Var C, Pom : Char;
    I, Delka : Integer;
Begin
  If M.Poc = 0 Then
    Begin
      Writeln(Prefix);
      Exit;
    End;

  { uschovame a odebereme prvni prvek }
  C := M.A[1];
  For I := 1 To M.Poc - 1 Do M.A[I] := M.A[I+1];
  Dec(M.Poc);

  Prefix := Prefix + C;
  Permutuj(Prefix, M);

  Delka := Length(Prefix);
  { postupne budeme vracet a odebirat vsechny ostatni prvky }
  For I := 1 To M.Poc Do
    Begin
      { prohodim uschovany prvek s tim, ktery je na rade }
      Pom := M.A[I];
      M.A[I] := C;
      C := Pom;

      { pripravime prefix}
      Prefix[Delka] := C;

      Permutuj(Prefix, M);
    End;

  { Vratime vse do puvodniho stavu }
  Prefix := Copy(Prefix, 1, Delka - 1);
  Inc(M.Poc);
  M.A[M.Poc] := C;
End;

Procedure NastavMnozinu(K : Integer; Var M : TMnozina);
Var I : Integer;
Begin
  M.Poc := K;
  For I := 1 To K Do M.A[I] := Chr(Ord('A') + I - 1);
End;


Begin
  Writeln;
  NastavMnozinu(N, M);
  S := '';
  Permutuj(S, M);
End.