import sys import pypyjit import itertools import heapq import math from collections import deque, defaultdict, Counter input = sys.stdin.readline sys.setrecursionlimit(10 ** 6) pypyjit.set_param('max_unroll_recursion=-1') N = int(input()) X = list(map(int, input().split())) A = list(map(int, input().split())) D = {} for i, x in enumerate(X): D[x] = i E = [[] for _ in range(N)] for i, (x, a) in enumerate(zip(X, A)): l, r = x - a, x + a li, ri = D.get(l), D.get(r) if li is not None: E[li].append(i) if ri is not None: E[ri].append(i) B = [(i, x + a) for i, x, a in zip(range(N), X, A)] B.sort(key=lambda x: x[1], reverse=True) ans = [None] * N flag = [False] * N for i, m in B: if flag[i] is True: continue def dfs(v): flag[v] = True ans[v] = m - X[v] for d in E[v]: if flag[d] is False: dfs(d) dfs(i) print(*ans, sep='\n')