import sys sys.setrecursionlimit(10**6) N = int(input()) A = list(map(int, input().split())) pos = [0]*(N+1) for i in range(N): pos[A[i]] = i G = {i:[-1,-1] for i in range(1,N+1)} stack = [] for i in range(1,N+1): last = -1 while stack and pos[i]0: G[i][0] = last if len(stack)>0: G[stack[-1]][1] = i stack.append(i) B = [-1]*N B[pos[A[0]]] = 0 val = [[0,0] for _ in range(N)] cnt = 0 def dfs(v): global cnt for u in G[v]: if u<0:continue B[pos[u]] = B[pos[v]]+1 cnt += 1 val[pos[u]][0] = cnt dfs(u) cnt += 1 val[pos[v]][1] = cnt dfs(A[0]) C = [0]*N for i in range(N): C[i] = (val[i][1]-val[i][0])//2 print(*B) print(*C)