n = int(input()) x = list(map(int,input().split())) a = list(map(int,input().split())) xx = {} for i in range(n): xx[x[i]] = i from collections import deque def dfs(): vis = [-1] * n vis_max_idx = [-1] * n for i in range(n): if vis[i] == -1: q = deque([(x[i],x[i])]) dist_max = 0 while q: node,dist = q.popleft() idx = xx[node] dist = node + a[idx] dist_max = max(dist_max ,dist) vis[idx] = i if a[idx] + node in xx: if vis[xx[a[idx] + node]] != -1: dist_max = max(dist_max, vis_max_idx[vis[xx[a[idx] + node]]]) else: q.append((a[idx] + node,dist)) if node - a[idx] in xx: if vis[xx[node - a[idx]]] != -1: dist_max = max(dist_max , vis_max_idx[vis[xx[node - a[idx] ]]]) else: q.append((node - a[idx] ,dist)) vis_max_idx[i] = dist_max return vis,vis_max_idx vis,vis_max_idx = dfs() for i in range(n): print(vis_max_idx[vis[i]]-x[i])