#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 69;
const int INF = 1e9;
int n, ans[11], mark[11];
void solve(char type, int val) {
  memset(mark, 0, sizeof mark);
  while (val != 0) {
    int lg = log2(val);
    mark[lg] = 1;
    val -= (1 << lg);
  }
  if (type == '^')
    for (int i = 0; i < 10; i++)
      if (mark[i])
        if (ans[i] == 0 or ans[i] == 2)
          ans[i]++;
        else
          ans[i]--;
  if (type == '|')
    for (int i = 0; i < 10; i++)
      if (mark[i]) ans[i] = 1;
  if (type == '&')
    for (int i = 0; i < 10; i++)
      if (!mark[i]) ans[i] = 0;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  char type;
  int val, XOR = 0, OR = 0;
  cin >> n;
  for (int i = 0; i < 10; i++) ans[i] = 2;
  for (int i = 0; i < n; i++) cin >> type >> val, solve(type, val);
  for (int i = 0; i < 10; i++) {
    if (ans[i] == 0) OR += (1 << i), XOR += (1 << i);
    if (ans[i] == 1) OR += (1 << i);
    if (ans[i] == 3) XOR += (1 << i);
  }
  cout << 2 << "\n";
  cout << "| " << OR << "\n";
  cout << "^ " << XOR << "\n";
}
