#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 50;
struct Operator {
  char ch;
  int x;
} p[maxn];
int n;
int cal(int x) {
  for (int i = 0; i < n; i++) {
    if (p[i].ch == '|')
      x |= p[i].x;
    else if (p[i].ch == '&')
      x &= p[i].x;
    else if (p[i].ch == '^')
      x ^= p[i].x;
  }
  return x;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> p[i].ch >> p[i].x;
  int an = 0;
  int xo = 0;
  int orr = 0;
  int anda = 0;
  int ora = 0;
  int xora = 0;
  int pos = cal(0);
  for (int i = 0; i < 10; i++) {
    int cur = cal((1 << i));
    if ((cur & (1 << i)) == 0 && (pos & (1 << i)) == 0)
      continue;
    else if ((cur & (1 << i)) && (pos & (1 << i))) {
      an += (1 << i);
      orr += (1 << i);
    } else if (((cur & (1 << i)) == 0) && (pos & (1 << i))) {
      an += (1 << i);
      xo += (1 << i);
    } else
      an += (1 << i);
  }
  printf("3\n");
  printf("| %d\n", orr);
  printf("& %d\n", an);
  printf("^ %d\n", xo);
  return 0;
}
