You are given two arrays a and b, both of length n. All elements of both arrays are from 0 to n-1.

You can reorder elements of the array b (if you want, you may leave the order of elements as it is). After that, let array c be the array of length n, the i-th element of this array is c_i = (a_i + b_i) \% n, where x \% y is x modulo y.

Your task is to reorder elements of the array b to obtain the lexicographically minimum possible array c.

Array x of length n is lexicographically less than array y of length n, if there exists such i (1 ≤ i ≤ n), that x_i < y_i, and for any j (1 ≤ j < i) x_j = y_j.

Input

The first line of the input contains one integer n (1 ≤ n ≤ 2 ⋅ 10^5) — the number of elements in a, b and c.

The second line of the input contains n integers a_1, a_2, ..., a_n (0 ≤ a_i < n), where a_i is the i-th element of a.

The third line of the input contains n integers b_1, b_2, ..., b_n (0 ≤ b_i < n), where b_i is the i-th element of b.

Output

Print the lexicographically minimum possible array c. Recall that your task is to reorder elements of the array b and obtain the lexicographically minimum possible array c, where the i-th element of c is c_i = (a_i + b_i) \% n.

Examples

Input


4
0 1 2 1
3 2 1 1


Output


1 0 0 2 


Input


7
2 5 1 5 3 4 3
2 4 3 5 6 5 1


Output


0 0 0 1 0 2 4 
import sys

input = sys.stdin.readline
print = sys.stdout.write

def binsearch(nums, target):
    left = 0
    right = len(nums) - 1
    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] > target:
            right = mid - 1
        elif nums[mid] < target:
            left = mid + 1

    return left

n = int(input())

a = [int(z) for z in input().split()]

b = [int(z) for z in input().split()]

b.sort()

occ = [0] * n

for i in b:
    occ[i] += 1

ref = list(range(1, n))
ref += [0]

res = []

for i in a:
    f = (n - i) % n

    while occ[f] == 0:

        if occ[ref[f]] == 0:
            ref[f] = ref[ref[f]]

        f = ref[f]

    occ[f] -= 1

    res.append((i+f) % n)

print(' '.join([str(j) for j in res]))

# for i in range(n):
#
#     e = a[i]
#
#     f = n - e
#
#     pl1 = b.bisect_left(f)
#     # print(s, f, pl1)
#
#     if pl1 >= len(b):
#         pl1 = 0
#     print(str((e + b.pop(pl1))%n) + ' ')
#     # b_new.append(b.pop(pl1))
#     # if pl1 == len(s):
#     #     pl1 -= 1
#     # if pl1 == len(s) - 1 and s[-1] < f:
#     #     pl1 = 0
#     # while occ[s[pl1]] == 0:
#     #     if pl1 == len(s) - 1:
#     #         pl1 = 0
#     #         continue
#     #     pl1 += 1
#     # occ[s[pl1]] -= 1
#     #
#     # b_new.append(s[pl1])
# #
# # res = []
# # for i in range(n):
# #
# #     l = (a[i] + b_new[i]) % n
# #
# #     res.append(l)
# #
# # print(' '.join([str(i) for i in res]))
#
