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


import java.io.*;
import java.util.*;
public class Main{

    public static void main(String[] args) throws IOException {
        FastScanner sc=new FastScanner(System.in);
        int n=sc.nextInt();
        int a[]=new int [10];
        Arrays.fill(a, -1);
        for(int i=0;i<n;i++){
            
            char c=sc.next().charAt(0);
            int nu=sc.nextInt();
            String num=Integer.toBinaryString(nu);
            num="0000000000".substring(0,10-num.length())+num;
            switch(c){
                case'|':
                    or(a,num);
                    break;
                case '&':
                    and(a,num);
                    break;
                case'^':
                    xor(a,num);
                    break;
            }
            
        }
        StringBuilder or=new StringBuilder();
        StringBuilder xor=new StringBuilder();
        StringBuilder and=new StringBuilder();
        
        for(int i=0;i<10;i++){
            switch(a[i]){
                case -1:
                    or.append("0");
                    xor.append("0");
                    and.append("1");
                    break;
                case 0:
                    and.append("0");
                    or.append("0");
                    xor.append("0");
                    break;
                case 1:
                    and.append("1");
                    or.append("1");
                    xor.append("0");
                    break;
                case 2:
                    and.append("1");
                    or.append("0");
                    xor.append("1");
                    break;
            }
        }
        int ct = 0;
        if (String.valueOf(and).equals("1111111111")) and = null;
        else ct++;
        if (String.valueOf(or).equals("0000000000")) or = null;
        else ct++;
        if (String.valueOf(xor).equals("0000000000")) xor = null;
        else ct++;
        System.out.println(ct);
        if (and != null) System.out.println("& " + Integer.parseInt(String.valueOf(and), 2));
        if (or != null) System.out.println("| " + Integer.parseInt(String.valueOf(or), 2));
        if (xor != null) System.out.println("^ " + Integer.parseInt(String.valueOf(xor), 2));
        
    }
     private static void xor(int[] bits, String num) {
        for (int i = 0; i < bits.length; i++) {
            if (num.charAt(i) == '1') {
                // flip bits
                switch (bits[i]) {
                    case -1:
                        bits[i] = 2;
                        break;
                    case 1:
                        bits[i] = 0;
                        break;
                    case 0:
                        bits[i] = 1;
                        break;
                    case 2:
                        bits[i] = -1;
                        break;
                }
            }
        }
    }

    private static void or(int[] bits, String num) {
        for (int i = 0; i < bits.length; i++) {
            if (num.charAt(i) == '1') bits[i] = 1;
        }
    }

    private static void and(int[] bits, String num) {
        for (int i = 0; i < bits.length; i++) {
            if (num.charAt(i) == '0') bits[i] = 0;
        }
    }
    
    
    public static String dTb(int n){
        String ans="";
        while(n>0){
            ans=n%2+ans;
            n/=2;
        }
        for(int i=0;i<10-ans.length();i++){
            ans="0"+ans;
        }
        return ans;
    }
    public static int bTd(String b){
        int ans=0;
        for(int i=0;i<b.length();i++){
            if(b.charAt(b.length()-1-i)=='1')ans+=Math.pow(2, i);
        }
        return ans;
    }
     //__________________________________________________________
    static class FastScanner {
        BufferedReader br;
        StringTokenizer st;
            public FastScanner(InputStream i) {
            br =  new BufferedReader(new InputStreamReader(i));
            st = new StringTokenizer("");
        }
        public String next() throws IOException {
            if(st.hasMoreTokens())return st.nextToken();
                else st = new StringTokenizer(br.readLine());
            return next();
        }
        public int nextInt() throws IOException {return Integer.parseInt(next());}
        public long nextLong() throws IOException {return Long.parseLong(next());}
        public double nextDouble() throws IOException {return Double.parseDouble(next());}
    }
}

