package basics_600;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BOJ6603 {
	static int[] arr;
	static boolean[] visited;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		while (true) {

			String[] st = br.readLine().split(" ");
			int N = Integer.parseInt(st[0]);
			arr = new int[N];
			visited = new boolean[N];

			if (N == 0)
				break;

			// 집합 S입력
			for (int i = 1; i <= N; i++) {
				arr[i-1] = Integer.parseInt(st[i]);
			}

			//집합 S에서 6개 뽑는 조합의 수와 같다. 
			//0번째 인덱스 있는 애부터 시작~6번째 인덱스까지 
			makeLotto(arr, visited, 0, 6);
			System.out.println();
		}

	}

	static void makeLotto(int[] arr, boolean[] visited, int start, int r) {
		if(r==0) { //더이상 뽑을게 남아있지 않다면 뽑힌 숫자들 출력 
			print(arr,visited);
			return;	
		}else {
			for(int i=start;i<arr.length;i++) { 
				visited[i] = true; //로또 번호로 뽑혔다면 true 
				makeLotto(arr,visited,i+1,r-1); //하나 뽑았으니까 다음거부터 시작해서 크기-1만큼 다시 반복 
				visited[i] = false;
			}
		}
			
		
	}

	static void print(int[] arr, boolean[] visited) {
		for(int i=0;i<arr.length;i++) {
			if(visited[i]) 
				System.out.print(arr[i]+" ");
		}
		System.out.println();
	}

}