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

'''input
3
& 1
& 3
& 5
'''
'''
Author : dhanyaabhirami
Great things never come from comfort zones
'''
from collections import defaultdict as dd
from collections import Counter as ccd
from itertools import  permutations as pp
from itertools import combinations as cc
from random import randint as rd
from bisect import bisect_left as bl
from bisect import bisect_right as br
import heapq as hq
import math

mod=pow(10,9) +7
def inp(flag=0):
    if flag==0:
        return list(map(int,input().strip().split(' ')))
    else:
        return int(input())

# Code credits
# assert(debug()==true)

# for _ in range(int(input())):
#     n=inp(1)
    
n=int(input())
a=0
b=1023
for i in range(n):
    c,k= input().strip().split(' ')
    k=int(k)
    if (c=='|'):
            a|=k
            b|=k        
    elif (c=='^'):
        a^=k
        b^=k
    elif (c=='&'):
        a&=k
        b&=k
        
OR = 0
XOR = 0
for i in range(10):
    x=1<<i
    if a&x and b&x: # set 1
        OR|=x
    if a&x and ~b&x: # swap
        XOR|=x
    if ~a&x and ~b&x: # set 0
        OR|=x
        XOR|=x
print('2')
print('|',OR)
print('^',XOR)