1
& 0
 1
^ 123
 10
^ 218
& 150
| 935
& 61
| 588
& 897
| 411
| 584
^ 800
| 704
 3
& 1
& 3
& 5
 1
| 123
 1
^ 0
 1
| 1023
 3
& 242
^ 506
^ 522
 10
^ 160
& 1021
& 510
^ 470
& 1022
& 251
& 760
& 1016
| 772
| 515
 1
& 1023
 1
| 0
 2
| 56
^ 875
 1
^ 1023
 2
| 999
^ 689
 3
^ 125
^ 377
& 1019
 1
& 123

3
& 0
| 0
^ 0
 3
& 1023
| 0
^ 123
 3
& 763
| 763
^ 0
 3
& 1
| 0
^ 0
 3
& 1023
| 123
^ 0
 3
& 1023
| 0
^ 0
 3
& 1023
| 1023
^ 0
 3
& 1010
| 768
^ 240
 2
| 775
^ 112
 3
& 1023
| 0
^ 0
 3
& 1023
| 0
^ 0
 3
& 983
| 16
^ 835
 3
& 1023
| 0
^ 1023
 3
& 350
| 326
^ 16
 3
& 1019
| 0
^ 256
 3
& 123
| 0
^ 0

n = int(raw_input())
temp = ''
o = []
a = []
x = []
val = 10
first = ''
second = ''
third = ''
for i in range(n):
	temp = raw_input().split()
	if(first==''):
		first = temp[0] 
	elif(first != temp[0] and second==''):
		second = temp[0]
	elif(first != temp[0] and second!=temp[0] and third==''):
		third = temp[0]
	if(temp[0]=='|'):
		o.append(int(temp[1]))
		val|=int(temp[1])
	if(temp[0]=='&'):
		a.append(int(temp[1]))
		val&=int(temp[1])
	if(temp[0]=='^'):
		x.append(int(temp[1]))
		val^=int(temp[1])
ans_x = 0
for i in x:
	ans_x^=i
ans_o = 0
for i in o:
	ans_o|=i
if(len(a)>=1):
	ans_a = a[0]
	for i in range(1,len(a)):
		ans_a&=a[i]
else:
	ans_a=-1

count = 0
if(ans_x!=0):
	count+=1
if(ans_o!=0):
	count+=1
if(ans_a!=-1):
	count+=1
print count
val_1 = 10

def q():
	global val_1
	if(ans_o!=0):
		val_1|=ans_o
		print '| ' + str(ans_o)
def w():
	global val_1
	if(ans_x!=0):
		print '^ ' + str(ans_x)
		val_1^=ans_x
def e():
	global val_1
	if(ans_a!=-1):
		val_1&=ans_a
		print '& ' + str(ans_a)
if(first=='|'):
	q()
elif(first=='&'):
	e()
elif(first=='^'):
	w()
if(second=='|'):
	q()
elif(second=='&'):
	e()
elif(second=='^'):
	w()
if(third=='|'):
	q()
elif(third=='&'):
	e()
elif(third=='^'):
	w()
# print val, val_1