defone():
N =int(input())return N
deftwo(N):
arr =[]
index =0while index < N:
x =int(input())
arr.append(x)
index +=1return arr
defthree():
M =int(input())return M
deffour(M):
M_left =[]
index_m_left =0while index_m_left < M:
x =int(input())
M_left.append(x)
index_m_left +=1return M_left
deffive(M):
M_right =[]
index_m_right =0while index_m_right < M:
x =int(input())
M_right.append(x)
index_m_right +=1return M_right
defsix(M):
op =[]
index_m_op =0while index_m_op < M:
op_input =input()
op.append(op_input)
index_m_op +=1return op
defseven(M):
arr_X =[]
index_m_X =0while index_m_X < M:
x =int(input())
arr_X.append(x)
index_m_X +=1return arr_X
defmain():
N = one()
arr = two(N)
M = three()
M_left = four(M)
M_right = five(M)
op = six(M)
arr_X = seven(M)
i =0while i < M:
index_left = M_left[i]-1
index_right = M_right[i]-1
option = op[i]
option_X = arr_X[i]if index_left == index_right:
num = arr[index_left]if option =='=':
num = option_X
arr[index_left]= num
elif option =='|':
num = option_X | num
arr[index_left]= num
elif option =='&':
num = option_X & num
arr[index_left]= num
else:for index inrange(index_left, index_right+1):
num = arr[index]if option =='=':
num = option_X
arr[index]= num
elif option =='|':
num = option_X | num
arr[index]= num
elif option =='&':
num = option_X & num
arr[index]= num
i +=1print(arr)if __name__ =='__main__':
main()