import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        while(s.hasNext()){
           s.nextLine();
           String[] arr = s.nextLine().split(" ");
           List<List<String>> list = new ArrayList<>();
           huisu(0, arr, new Stack<>(), new ArrayList<>(), list);
           list.sort((o1, o2) -> {
            int iTemp = 0;
            for (int i = 0; i < o1.size(); i++) {
                if (o1.get(i).compareTo(o2.get(i)) != 0) {
                    iTemp = i;
                    break;
                }
            }
            return o1.get(iTemp).compareTo(o2.get(iTemp));
        });
           list.forEach(o-> System.out.println(String.join(" ",o)));
        }
    }

    private static void huisu(int start, String[] arr, Stack<String> stack, List<String> listTemp, List<List<String>> list) {
        if (start == arr.length) {
            if (!stack.isEmpty()) {
                String peek = stack.peek();
                listTemp.add(peek);
                stack.pop();
                huisu(start, arr, stack, listTemp, list);
                stack.push(peek);//回溯
                listTemp.remove(listTemp.size() - 1);//回溯
            } else {
                list.add(new ArrayList<>(listTemp));
            }
            return;
        }
        ///////可入可出的情况
        //入栈
        stack.push(arr[start]);
        huisu(start + 1, arr, stack, listTemp, list);
        stack.pop();
        //出栈
        if (!stack.isEmpty()) {
            String peek = stack.peek();
            stack.pop();
            listTemp.add(peek);
            huisu(start, arr, stack, listTemp, list);
            listTemp.remove(listTemp.size() - 1);//回溯
            stack.push(peek);//回溯
        }
    }
}