Buggy python submission (verdict: Time Limit Exceeded):
import sys
import math
import numpy as np
bl = np.searchsorted

N=int(input())
a=np.int32(input().split())
b=np.int32(input().split())
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    ai=a % (2*T)
    bi=b % (2*T)
    bi.sort()
    bi = np.hstack((bi - 2*T, bi))
    tmp=0
    left1 = bl(bi, T - ai)
    right1 = bl(bi, 2*T - ai)
    left2 = bl(bi, 3*T - ai)
    right2 = bl(bi, 4*T - ai)
    
    if np.sum(-left1 + right1) % 2: ans+=T

"""
    for j in range(N):
        x=a[j]%(2*T)
        tmp+= -bl(bi,T-x)+bl(bi,2*T-x)-bl(bi,3*T-x)+bl(bi,4*T-x)
"""


print(ans)

Fixed submission:
import sys
import math
import numpy as np
bl = np.searchsorted

N=int(input())
a=np.int32(input().split())
b=np.int32(input().split())
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    ai=a % (2*T)
    bi=b % (2*T)
    bi.sort()

    tmp=0
    left1 = bl(bi, T - ai)
    right1 = bl(bi, 2*T - ai)
    left2 = bl(bi, 3*T - ai)
    right2 = bl(bi, 4*T - ai)    
    if np.sum(-left1 + right1 -left2 +right2) % 2: ans+=T

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
import sys
import math
from bisect import bisect_left as bl
import numpy as np

N=int(input())
a=np.int32(input().split())
b=np.int32(input().split())
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    ai=a % (2*T)
    bi=b % (2*T)
    bi.sort()
    tmp=0
    for j in range(N):
        x=a[j]%(2*T)
        tmp+= -bl(bi,T-x)+bl(bi,2*T-x)-bl(bi,3*T-x)+bl(bi,4*T-x)
    ans+=(tmp%2)*T

print(ans)

Fixed submission:
import sys
import math
import numpy as np
bl = np.searchsorted

N=int(input())
a=np.int32(input().split())
b=np.int32(input().split())
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    ai=a % (2*T)
    bi=b % (2*T)
    bi.sort()

    tmp=0
    left1 = bl(bi, T - ai)
    right1 = bl(bi, 2*T - ai)
    left2 = bl(bi, 3*T - ai)
    right2 = bl(bi, 4*T - ai)    
    if np.sum(-left1 + right1 -left2 +right2) % 2: ans+=T

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
import sys
import math
from bisect import bisect_left as bl
import numpy as np

N=int(input())
a=np.int32(input().split())
b=np.int32(input().split())
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    ai=a % (2*T)
    bi=b % (2*T)

    bi.sort()
    tmp=0
    for j in range(N):
        x=a[j]%(2*T)
        tmp+= -bl(bi,T-x)+bl(bi,2*T-x)-bl(bi,3*T-x)+bl(bi,4*T-x)
    ans+=(tmp%2)*T

print(ans)

Fixed submission:
import sys
import math
import numpy as np
bl = np.searchsorted

N=int(input())
a=np.int32(input().split())
b=np.int32(input().split())
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    ai=a % (2*T)
    bi=b % (2*T)
    bi.sort()

    tmp=0
    left1 = bl(bi, T - ai)
    right1 = bl(bi, 2*T - ai)
    left2 = bl(bi, 3*T - ai)
    right2 = bl(bi, 4*T - ai)    
    if np.sum(-left1 + right1 -left2 +right2) % 2: ans+=T

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
import sys
import math
from bisect import bisect_left as bl

N=int(input())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    b=[b[i]%(2*T) for i in range(N)]
    b.sort()
    tmp=0
    for j in range(N):
        x=a[j]%(2*T)
        tmp+= -bl(b,T-x)+bl(b,2*T-x)-bl(b,3*T-x)+bl(b,4*T-x)
    ans+=(tmp%2)*T

print(ans)

Fixed submission:
import sys
import math
import numpy as np
bl = np.searchsorted

N=int(input())
a=np.int32(input().split())
b=np.int32(input().split())
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    ai=a % (2*T)
    bi=b % (2*T)
    bi.sort()

    tmp=0
    left1 = bl(bi, T - ai)
    right1 = bl(bi, 2*T - ai)
    left2 = bl(bi, 3*T - ai)
    right2 = bl(bi, 4*T - ai)    
    if np.sum(-left1 + right1 -left2 +right2) % 2: ans+=T

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
import sys
import math
from bisect import bisect_left as bl

def cul(l,r):
    return bl(b,r)-bl(b,l)

N=int(input())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    b=[b[i]%(2*T) for i in range(N)]
    b.sort()
    tmp=0
    for j in range(N):
        x=a[j]%(2*T)
        tmp+= -bl(b,T-x)+bl(b,2*T-x)-bl(b,3*T-x)+bl(b,4*T-x)
    ans+=(tmp%2)*T

print(ans)

Fixed submission:
import sys
import math
import numpy as np
bl = np.searchsorted

N=int(input())
a=np.int32(input().split())
b=np.int32(input().split())
b.sort()
q=max(a+[b[-1]])
if q==0: print(0),sys.exit()

p=math.ceil( math.log(q,2) )+1


ans=0
for i in range(p,-1,-1):
    T=2**i
    ai=a % (2*T)
    bi=b % (2*T)
    bi.sort()

    tmp=0
    left1 = bl(bi, T - ai)
    right1 = bl(bi, 2*T - ai)
    left2 = bl(bi, 3*T - ai)
    right2 = bl(bi, 4*T - ai)    
    if np.sum(-left1 + right1 -left2 +right2) % 2: ans+=T

print(ans)