import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.TreeSet; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); String[] sa = br.readLine().split(" "); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = Integer.parseInt(sa[i]) - 1; } br.close(); Node[] arr = new Node[n]; int[] ai = new int[n]; for (int i = 0; i < n; i++) { Node o = new Node(); o.i = i; arr[i] = o; ai[a[i]] = i; } TreeSet set = new TreeSet<>(); for (int i = 0; i < n; i++) { set.add(a[i]); Integer r = set.higher(a[i]); if (r != null) { Node o = arr[ai[r]]; if (o.l == null) { o.l = arr[ai[a[i]]]; continue; } } Integer l = set.lower(a[i]); if (l != null) { Node o = arr[ai[l]]; if (o.r == null) { o.r = arr[ai[a[i]]]; continue; } } } dfs(arr[0], 0); StringBuilder sb = new StringBuilder(); for (Node o : arr) { sb.append(o.dep).append(' '); } sb.deleteCharAt(sb.length() - 1); System.out.println(sb.toString()); sb = new StringBuilder(); for (Node o : arr) { sb.append(o.size).append(' '); } sb.deleteCharAt(sb.length() - 1); System.out.println(sb.toString()); } static int dfs(Node o, int dep) { o.dep = dep; int size = 1; if (o.l != null) { size += dfs(o.l, dep + 1); } if (o.r != null) { size += dfs(o.r, dep + 1); } o.size = size - 1; return size; } static class Node { int i, dep, size; Node l, r; } }