Let's define the sum of two permutations *p* and *q* of numbers 0, 1, ..., (*n* - 1) as permutation <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/a6967136eb87d05a01f795f6061b884a1a9f4f4b.png" style="max-width: 100.0%;max-height: 100.0%;"/>, where *Perm*(*x*) is the *x*-th lexicographically permutation of numbers 0, 1, ..., (*n* - 1) (counting from zero), and *Ord*(*p*) is the number of permutation *p* in the lexicographical order.

For example, *Perm*(0) = (0, 1, ..., *n* - 2, *n* - 1), *Perm*(*n*! - 1) = (*n* - 1, *n* - 2, ..., 1, 0)

Misha has two permutations, *p* and *q*. Your task is to find their sum.

Permutation *a* = (*a*<sub class="lower-index">0</sub>, *a*<sub class="lower-index">1</sub>, ..., *a*<sub class="lower-index">*n* - 1</sub>) is called to be lexicographically smaller than permutation *b* = (*b*<sub class="lower-index">0</sub>, *b*<sub class="lower-index">1</sub>, ..., *b*<sub class="lower-index">*n* - 1</sub>), if for some *k* following conditions hold: *a*<sub class="lower-index">0</sub> = *b*<sub class="lower-index">0</sub>, *a*<sub class="lower-index">1</sub> = *b*<sub class="lower-index">1</sub>, ..., *a*<sub class="lower-index">*k* - 1</sub> = *b*<sub class="lower-index">*k* - 1</sub>, *a*<sub class="lower-index">*k*</sub> &lt; *b*<sub class="lower-index">*k*</sub>.
The first line contains an integer *n* (1 ≤ *n* ≤ 200 000).

The second line contains *n* distinct integers from 0 to *n* - 1, separated by a space, forming permutation *p*.

The third line contains *n* distinct integers from 0 to *n* - 1, separated by spaces, forming permutation *q*.
from array import array

n = int(input())

def sum(a, i):
    s = 0
    while i >= 0:
        s += a[i]
        i = (i&(i+1))-1
    return s

def change(a, i, s):
    while i < len(a):
        a[i] += s
        i |= i + 1

def get(p):
    a = array('l',[0]*n)
    fen = array('l',[0]*n)
    for i in range(n):
        change(fen, i, 1)
    for i in range(n):
        a[i] = sum(fen, p[i]) - 1
        change(fen, p[i], - 1)
    return a

def rget(a):
    p = array('l',[0]*n)
    fen = array('l',[0]*n)
    for i in range(n):
        change(fen, i, 1)
        l,r = -1, n-1
        while r - l > 1:
            m = (l+r) // 2
            if sum(fen, m)-1 < a[i]:
                l = m
            else:
                r = m
        p[i] = r
        change(fen, p[i], -1)
    return p

a = array('l',list(map(int,input().split())))
b = array('l',list(map(int,input().split())))
pa = get(a)
pb = get(b)
pc = array('d',[pa[i] + pb[i] for i in range(n)])
for i in range(n-1,-1,-1):
    if pc[i] >= n - i:
        if i > 0:
            pc[i-1] += 1
        pc[i] -= n - i
c = rget(pc)
print(' '.join(map(str,c)))
