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

//package com.company;
import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main
{
    static int[] binaryToArr(int number){
        int[] ret = new int[10];
        int mask = 1;
        for (int i = ret.length - 1; i >= 0; i--) {
            ret[i] = (mask & number) != 0 ? 1: 0;
            mask <<= 1;
        }
        return ret;
    }
    static int[] ret = new int[10];
    static int[] xor = new int[10];
    static void parse(char type, int num){
        int[] b = binaryToArr(num);
        switch (type) {
            case '&': //&
                for (int i = 0; i < 10; i++) {
                    if (b[i] == 0) {
                        ret[i] = 0;
                    }
                }
                break;
            case '|':
                for (int i = 0; i < 10; i++) {
                    if (b[i] == 1) {
                        ret[i] = 1;
                    }
                }
                break;
            case '^':
                for (int i = 0; i < 10; i++) {
                    if (ret[i] == 0 || ret[i] == 1) {
                        ret[i] = b[i] ^ ret[i];
                    } else {
                        if (xor[i] == -1) xor[i] = b[i];
                        else xor[i] = xor[i] ^ b[i];
                    }
                }
        }
    }


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < 10; i++) {
            ret[i] = -1; xor[i] = -1;
        }
        for (int i = 0; i < n; i++) {
            char c = sc.next().charAt(0);
            int n1 = sc.nextInt();
            parse(c, n1);

        }
        int mask = 1 << 9;
        int and = 0, or = 0, xor1 = 0;
        for (int i = 0; i < 10; i++) {
            if (ret[i] == 0){
            } else if (ret[i] == 1){
                and += mask;
                or += mask;
            } else {
                xor1 += xor[i] * mask;
                and += mask;
            }
            mask >>= 1;
        }
        System.out.println(3);
        System.out.println("^ " + xor1);
        System.out.println("& " + and);
        System.out.println("| " + or);

    }
}