import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static ArrayList<List<Integer>> res = new ArrayList<>();//结果集
    public static List<Integer> path = new ArrayList<>();//单次结果
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int[] arr = new int[n];
            for(int i=0;i<n;i++){
                arr[i] = in.nextInt();
            }
            dfs(arr,n,new Stack<Integer>(),0,0);
            ArrayList<String> ans = new ArrayList<>();//收集结果,将List<String>转化为String
            StringBuilder sb = new StringBuilder();
            for(List<Integer> l : res){
                sb = new StringBuilder();//清空
                for(int i=0;i<n;i++){
                    sb.append(l.get(i));
                    if(i!=n-1){
                        sb.append(" ");
                    }
                }
                ans.add(sb.toString());
            }
            Collections.sort(ans);//默认升序排列
            for(String s:ans){
                System.out.println(s);
            }
        }
    }
    public static void dfs(int[] arr,int n,Stack<Integer> stack,int in,int out){
        //终止条件,火车全部入站,又出站了
        if(in == n && out == n){
            res.add(new ArrayList<>(path));
            return;
        }
        if(in != n){
            stack.push(arr[in]);//进站
            dfs(arr,n,stack,in+1,out);
            stack.pop();//回溯
        }
        if(!stack.isEmpty()){//站内不是空的就可以选择出站
            int x = stack.pop(); 
            path.add(x);
            dfs(arr,n,stack,in,out+1);
            path.remove(path.size()-1);//回溯
            stack.push(x);//恢复现场
        }
    }
}