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 
class MinArray():
    def __init__(self,n, a, b):
        self.n = n
        self.a = a
        self.b = b
        self.cnts = [0]*self.n
        self.par = [i for i in range(self.n)]
        self.size = [1]*self.n

        for v in self.b:
            self.cnts[v] += 1

    def find(self, v):
        while v != self.par[v]:
            tmp = self.par[v]
            self.par[v] = self.par[tmp]
            v = tmp
        return v

    def union(self, u, v):
        u, v = self.find(u), self.find(v)
        self.par[u] = v

    def build_tree(self):
        for i in range(self.n-1,-1,-1):
            if self.cnts[i] == 0:
                self.union(i, (i+1)%self.n)

    def get_min(self):
        self.build_tree()
        arr = []
        for u in self.a:
            v = self.find((self.n-u)%self.n)
            arr.append((u+v)%self.n)
            self.cnts[v] -= 1
            if self.cnts[v] == 0:
                self.union(v, (v+1)%self.n)
        print(*arr)

n = int(input())
a = list(map(int,input().strip(' ').split(' ')))
b = list(map(int,input().strip(' ').split(' ')))
ma = MinArray(n,a,b)
ma.get_min()



