Anton goes to school, his favorite lessons are arraystudying. He usually solves all the tasks pretty fast, but this time the teacher gave him a complicated one: given two arrays b and c of length n, find array a, such that:

<image>

where a and b means bitwise AND, while a or b means bitwise OR.

Usually Anton is good in arraystudying, but this problem is too hard, so Anton asks you to help.

Input

The first line of the input contains a single integers n (1 ≤ n ≤ 200 000) — the size of arrays b and c.

The second line contains n integers bi (0 ≤ bi ≤ 109) — elements of the array b.

Third line contains n integers ci (0 ≤ ci ≤ 109) — elements of the array c.

Output

If there is no solution, print  - 1.

Otherwise, the only line of the output should contain n non-negative integers ai — elements of the array a. If there are multiple possible solutions, you may print any of them.

Examples

Input

4
6 8 4 4
16 22 10 10


Output

3 5 1 1 


Input

5
8 25 14 7 16
19 6 9 4 25


Output

-1
def f():
    n, = map(int,raw_input().split())
    B = map(int,raw_input().split())
    C = map(int,raw_input().split())
    D = [B[i]+C[i] for i in xrange(n)]
    t = sum(D)
    if n == 1 and B[0] != C[0]:
        print -1
        return
    if t % 2 or t % (n*2):
        print -1
        return
    tA = t / (n*2)
    if any((d-tA)%n for d in D):
        print -1
        return
    A = [(d-tA)//n for d in D]
    mask = [2**i for i in xrange(32)]
    c = [0]*32
    #for i in xrange(32):
        #c[i] = sum(1 if mask[i]&a else 0 for a in A)
    for a in A:
        for i in xrange(32):
            c[i] += 1 if mask[i]&a else 0
    if any(B[i] != sum(c[j]<<j if A[i]&mask[j] else 0 for j in xrange(32)) for i in xrange(n)):
        print -1
        return
    #if C[i] != sum(n<<j if a&mask[j] else c[j]<<j for j in xrange(32)):
    print ' '.join(map(str, A))
 
f()


