#조합 사용
from itertools import combinations
while True:
#숫자 개수와 숫자 집합 입력
number = list(map(int, input().split()))
#숫자 개수 0일시 루프 탈출
if(number == [0]): break
#숫자 개수와 정렬된 숫자 집합 저장
number_len = number[0]
number_list = sorted(number[1:])
#숫자 집합중 6개로 만들 수 있는 모든 조합 저장
cb_number_list = list(combinations(number_list, 6))
#모든 조합을 출력
for num in cb_number_list:
print(*num)
print("")
#인사이트
#파이써닉한 문제 풀이는 최대한 내장 함수를 효율적으로 써서 날먹(?)하는것
#코드 실행시간 단축
import sys
input = sys.stdin.readline
#6자리 숫자를 저장하는 list
result = [0 for _ in range(6)]
#숫자 집합의 길이 변수
number_len = 0
#정렬된 숫자 집합 저장 list
number_list = []
#주어진 숫자 집합에서 6자리 숫자 조합을 모두 찾아 출력하는 함수
#pos = 숫자 조합 상의 위치 (0~5)
#num = 숫자 조합 위치 상에 자리할 숫자 인덱스
def finder(pos, num):
#집합 길이와 집합 전역 변수 가져오기
global number_len, number_list
#마지막 숫자 조합 위치까지 완성되었을 때
if(pos == 0):
#숫자 조합 출력
print(*result)
return
#숫자 조합이 완성되지 않았을 때
else:
#바로 이전 숫자 집합 인덱스부터 마지막 숫자 집합 인덱스까지
for i in range(num+1, number_len):
#숫자 조합의 위치에 숫자 집합 상 해당 인덱스의 숫자를 대입
result[6-pos] = number_list[i]
#다음 숫자 조합 위치에 대해서 다음 숫자 집합 인덱스부터 탐색
finder(pos-1, i)
while True:
#숫자 개수와 집합 입력
number = list(map(int, input().split()))
#숫자 개수가 0일시 루프 탈출
if(number == [0]): break
#숫자 개수와 정렬된 집합 저장
number_len = number[0]
number_list = sorted(number[1:])
#숫자 집합 첫번째 위치부터 탐색 시작
finder(6, -1)
print("")
#인사이트
#조합을 의자 앉히기 유형처럼 해석한 로직
#조합의 6자리 숫자를 0~5개의 의자로 해석한 이후
#해당 자리에 올 수 있는 숫자를 오름차순으로 탐색하여
#이전 자리에 사용되지 않는 모든 숫자에 대한 경우의 수를 탐색함으로써
#6자리 조합을 만드는 모든 경우의 수에 대해 완전탐색
#C나 C++로 짰을 때는 더 빠른데, python은 이 로직이 더 느리다