program oj_1100;
var
    k,k1,i:longint;
    a,s:array[0..13]of longint;
    b:array[1..13]of boolean;
procedure print(p:longint);
var
    q:longint;
begin
    for q:=1 to p-1 do
    begin
        write(a[q],' ');
    end;
    write(a[p]); 
    writeln;
end;
procedure search(j:longint);
var
    q:longint;
begin
    if j>6 then print(6)
    else
    begin
        for q:=1 to k do
            if (b[q]=false)and(s[q]>a[j-1]) then
            begin
                a[j]:=s[q];
                b[q]:=true;
                search(j+1);
                b[q]:=false;
            end;
    end;
end;
begin
    read(k);
    repeat



        for i:=1 to k do
            read(s[i]);
        search(1);
        read(k);
        if k<>0 then
            writeln;

    until k=0;
end.


/**************************************************************
	Problem: 2123
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/