#include <bits/stdc++.h>
using namespace std;
const long long int mx = 1e6 + 1, Mod = 1e9 + 7, F = 0, T = 1, E = 2;
int n;
string dp[256][3];
vector<pair<int, char> > q;
string smin(string a, string b) {
  if (a.size() < b.size()) return a;
  if (a.size() > b.size()) return b;
  for (int i = 0; i < a.size(); i++) {
    if (a[i] < b[i]) return a;
    if (a[i] > b[i]) return b;
  }
  return a;
}
void update(int mask, char type, string s) {
  if (dp[mask][type].empty())
    dp[mask][type] = s;
  else
    dp[mask][type] = smin(s, dp[mask][type]);
}
int gn(string s) {
  int ans = 0;
  for (int i = s.size() - 1; i >= 0; i--)
    ans += (s[i] - '0') * (1LL << (s.size() - i - 1));
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  string s;
  dp[gn("00001111")][F] = "x";
  dp[gn("00110011")][F] = "y";
  dp[gn("01010101")][F] = "z";
  for (int w = 0; w < 10; w++) {
    for (int mask = 0; mask < 256; mask++) {
      if (!dp[mask][F].empty()) {
        s = dp[mask][F];
        update(mask, T, s);
        update(255 ^ mask, F, "!" + s);
        update(255 ^ mask, T, "!" + s);
        for (int i = 0; i < 256; i++)
          if (!dp[i][T].empty()) update(i & mask, T, dp[i][T] + "&" + s);
      }
      if (!dp[mask][T].empty()) {
        s = dp[mask][T];
        update(mask, E, s);
        for (int i = 0; i < 256; i++)
          if (!dp[i][E].empty()) update(i | mask, E, dp[i][E] + "|" + s);
      }
      if (!dp[mask][E].empty()) {
        s = dp[mask][E];
        update(mask, F, "(" + s + ")");
      }
    }
  }
  cin >> n;
  while (n--) {
    cin >> s;
    cout << dp[gn(s)][E] << '\n';
  }
  return 0;
}
