import sys input = sys.stdin.readline from collections import * sys.setrecursionlimit(2*10**5+10) class Scc: def __init__(self, N, G): self.N = N self.G = G self.RG = [[] for _ in range(N)] for v in range(N): for nv in G[v]: self.RG[nv].append(v) def decomp(self): order = [] visited = [False]*self.N def dfs(v): visited[v] = True for nv in self.G[v]: if not visited[nv]: dfs(nv) order.append(v) for v in range(self.N): if not visited[v]: dfs(v) visited = [False]*self.N comp = [-1]*self.N label = 0 def rdfs(v, label): comp[v] = label visited[v] = True for nv in self.RG[v]: if not visited[nv]: rdfs(nv, label) for v in reversed(order): if not visited[v]: rdfs(v, label) label += 1 return label, comp def construct(self): label, comp = self.decomp() belong = [[] for _ in range(label)] nG = [set() for _ in range(label)] for v in range(self.N): for nv in self.G[v]: if comp[v]!=comp[nv]: nG[comp[v]].add(comp[nv]) belong[comp[v]].append(v) return belong, nG N = int(input()) X = list(map(int, input().split())) d = defaultdict(lambda: -1) for i in range(N): d[X[i]] = i A = list(map(int, input().split())) G = [[] for _ in range(N)] for i in range(N): if d[X[i]+A[i]]!=-1: G[i].append(d[X[i]+A[i]]) if d[X[i]-A[i]]!=-1: G[i].append(d[X[i]-A[i]]) scc = Scc(N, G) belong, nG = scc.construct() res = [-1]*len(belong) for i in range(len(belong)): for v in belong[i]: res[i] = max(res[i], X[v]+A[v]) for v in range(len(belong)-1, -1, -1): for nv in nG[v]: res[v] = max(res[v], res[nv]) ans = [-1]*N for i in range(len(belong)): for v in belong[i]: ans[v] = res[i]-X[v] for i in range(N): print(ans[i])