Problem: 

Input

The first line of the input contains a single integer N (1 ≤ N ≤ 24). The next N lines contain 5 space-separated integers each. The first three integers will be between 0 and 2, inclusive. The last two integers will be between 0 and 3, inclusive. The sum of the first three integers will be equal to the sum of the last two integers.

Output

Output the result – a string of lowercase English letters.

Examples

Input


1
1 0 0 1 0


Output


a


Input


10
2 0 0 1 1
1 1 1 2 1
2 1 0 1 2
1 1 0 1 1
2 1 0 2 1
1 1 1 2 1
1 2 1 3 1
2 0 0 1 1
1 1 0 1 1
1 1 2 2 2


Output


codeforcez

Solution (in CPP):

Solution:
#include "bits/stdc++.h"
#include "unistd.h"

using namespace std;

using lli = long long int;
using vb = vector<bool>; using vc = vector<char>; using vd = vector<double>; using vi = vector<int>; using vvi = vector<vi>;
using vlli = vector<lli>; using vvlli = vector<vlli>; using pi = pair<int, int>; using plli = pair<lli, lli>;
#define pb push_back
#define mp make_pair
#define fori(x) for(int i = 0; i < x; ++i)
#define forj(x) for(int j = 0; j < x; ++j)
#define fork(x) for(lli k = 0; k < x; ++k)
#define forl(x) for(lli l = 0; l < x; ++l)
#define all(x) x.begin(), x.end()
#define sz(x) int(x.size())
#define lsz(x) lli(x.size())

#ifdef ONLINE_JUDGE
#define _mm_popcnt_u32 __builtin_popcount
#endif

int readint() { int q; scanf("%d", &q); return q; } lli readlong() { lli q; scanf("%lld", &q); return q; }
double readdbl() { double q; scanf("%lf", &q); return q; } char readc() { char q; scanf("%c", &q); return q; }
void printint(int q) { printf("%d", q); } void printlong(lli q) { printf("%lld", q); }
void printdbl(double q, int p = 6) { printf("%.*lf", p, q); }
void readln() { scanf("\n"); } void println() { printf("\n"); } void space() { printf(" "); }
void print(int q) { printint(q); } void print(lli q) { printlong(q); }
void print(double q) { printdbl(q); }void print(char c) { printf("%c", c); }
template <typename T> void println(T q) { print(q); println(); } template <typename T> void printsp(T q) { print(q); space(); }

template<typename T> T maxim(T f, T s) { return (f > s) ? f : s; } template<typename T> T minim(T f, T s) { return (f < s) ? f : s; }
template<typename T> T abs(T arg) { return arg < 0 ? -arg : arg; }

int main() {
  map<int, char> a;
  a[10010] = 'a';
  a[11020] = 'b';
  a[20011] = 'c';
  a[21012] = 'd';
  a[11011] = 'e';
  a[21021] = 'f';
  a[22022] = 'g';
  a[12021] = 'h';
  a[12012] = 'j';
  a[10120] = 'k';
  a[11130] = 'l';
  a[20121] = 'm';
  a[21122] = 'n';
  a[11121] = 'o';
  a[21131] = 'p';
  a[22132] = 'q';
  a[12131] = 'r';
  a[12122] = 't';
  a[10221] = 'u';
  a[11231] = 'v';
  a[12113] = 'w';
  a[20222] = 'x';
  a[21223] = 'y';
  a[11222] = 'z';
  
  int n = readint();
  fori(n) {
      int x = 0;
      forj(5) x = x * 10 + readint();
      print(a[x]);
  }
  return 0;
}