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

//codeforces_879C

import java.io.*;
import java.util.*;
import static java.lang.Math.*;
import java.math.*;

public class acm {
    static PrintWriter go = new PrintWriter(System.out);
    
    public static void main(String[] args) throws IOException {
        BufferedReader gi = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(gi.readLine());
        String[] line;
        int operand,cur;
        String operator;
        int[] ans = new int[10];
        Arrays.fill(ans, -10);
        for (int i = 0; i < n; i++) {
            line = gi.readLine().split(" ");
            operator = line[0];
            operand = Integer.parseInt(line[1]);
            cur = 0;
            if (operator.equals("|")){
                while (cur < 10){
                    if ((operand&(1<<cur)) == 1){
                        ans[cur] = 1;
                    }
                    cur++;
                }
            }else if (operator.equals("&")){
                while (cur < 10){
                    if ((operand&(1<<cur)) == 0){
                        ans[cur] = 0;
                    }
                    cur++;
                }
            }else{
                while (cur < 10){
                    if ((operand&(1<<cur)) == 1){
                        if (ans[cur] == 10 || ans[cur] == -10){
                            ans[cur] = -ans[cur];
                        }else{
                            ans[cur] = ans[cur]^1;
                        }
                    }
                    cur++;
                }
            }
        }
        int or, and, xor;
        or = xor = 0;
        and = 1023;
        for (int i = 0; i < 10; i++) {
            if (ans[i] == 0){
                and -= (1<<i);
            }else if (ans[i] == 1){
                or += (1<<i);
            }else if (ans[i] == 10){
                xor += (1<<i);
            }
        }
        go.println(3);
        go.print("| ");
        go.println(or);
        go.print("& ");
        go.println(and);
        go.print("^ ");
        go.println(xor);
        go.close();
    }
    
    static int[] parseArray(BufferedReader gi) throws IOException{
        String[] line = gi.readLine().split(" ");
        int[] ans = new int[line.length];
        for (int i = 0; i < line.length; i++) {
            ans[i] = Integer.parseInt(line[i]);
        }
        return ans;
    }
}