{
TASK: NAMES
LANG: PASCAL
}

Program Names;

 Var I, J, L: Longint;
     C, Ch, C1, C2: Array[1..2000] of Char;
     Charge: Char;
     Br, K, Len, ChPos, P, Pos: Longint;
     Bl: Boolean;

 Procedure Pro;
  Begin
   Br := 0;
   Pos := 1;
   Repeat
    Bl := False;
    Charge := '{';
    For K := Pos to Len do If Ch[K] < Charge then Begin
                                                   Charge := Ch[K];
                                                   P := K;
                                                  End;
    If P = Pos then
    Begin
     For K := Pos to Len do If Ch[K] <> Charge then Begin Pos := K; Break End;
     Bl := True;
    End;
   Until not(Bl) or (Pos = Len);
   Charge := '{';
   If Pos = Len then Begin End
                else
   Begin
    For K := Pos to Len do If Ch[K] < Charge then Begin
                                                   Charge := Ch[K];
                                                   P := K;
                                                  End;
    For K := Pos to P - 1 do
     Begin
      Inc(Br);
      C1[Br] := Ch[K];
     End;
    Br := 0;
    For K := P to Len do
     Begin
      Inc(Br);
      C2[Br] := Ch[K];
     End;





   End;



  End;

 Procedure Proc(X, Y: Longint);
  Begin
   Br := 0;
   For K := X to Y do
    Begin
     Inc(Br);
     Ch[Br] := C[K];
    End;
    Len := Br;
    Br := 0;
    Pro;
   For K := 1 to Len do Write(Ch[K]);
   WriteLn;
  End;







 Begin
  While not(eof) do Begin
                     Inc(I);
                     Read(C[I]);
                     If C[I] = #10 then Dec(I);
                     If C[I] = #13 then C[I] := ' ';
                    End;
  C[I+1] := #0;
  L := I;
  J := 0;
  For I := 1 to L do If C[I] = ' ' then Begin
                                         Proc(J+1, I - 1);
                                         J := I;
                                        End;


 End.