/*
ZADATAK: pljacka
JEZIK: c++
*/
#include <cstdlib>
#include <fstream>

using namespace std;
const int MAXN = 25;
const int MAXVAL = 40;
const int MAXT = MAXN * MAXVAL + 1;
int n;
int a, b, c, suma, sumb, sumc;
int va[MAXN], vb[MAXN], vc[MAXN];
char sol[MAXN];
bool sol_exists;
short max1[MAXT][MAXT], max2[MAXT][MAXT];
char who[MAXN][MAXT][MAXT];

void input(ifstream& in) {
     in >> n;
     in >> a >> b >> c;
     suma = 0; sumb = 0; sumc = 0;
     for (int i = 0; i < n; i++) {
         in >> va[i] >> vb[i] >> vc[i];
         suma += va[i];
         sumb += vb[i];
         sumc += vc[i];
     }
}

void output(ofstream& out) {
     if (!sol_exists) {
        out << "ODE GLAVA!\n";
        return;
     }
     for (int i = 0; i < n; i++) {
         out << sol[i] << "\n";
     }
}

void solve() {
     for (int j = 0; j < MAXT; j++)
         for (int k = 0; k < MAXT; k++) {
             max1[j][k] = -1;
             max2[j][k] = -1;
         }
     max1[0][0] = 0;
     for (int i = 0; i < n; i++) {
         for (int j = 0; j < MAXT; j++)
             for (int k = 0; k < MAXT; k++)
                 if (max1[j][k] >= 0) {
                    if (j + va[i] <= MAXT)
                       if (max1[j][k] > max2[j+va[i]][k]) {
                          max2[j+va[i]][k] = max1[j][k];
                          who[i][j+va[i]][k] = 'A';
                       }
                    if (k + vb[i] <= MAXT)
                       if (max1[j][k] > max2[j][k+vb[i]]) {
                          max2[j][k+vb[i]] = max1[j][k];
                          who[i][j][k+vb[i]] = 'B';
                       }
                    if (max1[j][k] + vc[i] > max2[j][k]) {
                       max2[j][k] = max1[j][k] + vc[i];
                       who[i][j][k] = 'C';
                    }

                 }
         for (int j = 0; j < MAXT; j++)
             for (int k = 0; k < MAXT; k++) {
                 max1[j][k] = max2[j][k];
                 max2[j][k] = -1;
             }
     }
     int bestj = 0, bestk = 0;
     sol_exists = false;
     for (int j = 0; j < MAXT; j++)
         for (int k = 0; k < MAXT; k++) {
             if (j*100 >= a*suma && k*100 >= b*sumb && max1[j][k] * 100 >= c*sumc)
                if ((!sol_exists) || (j + k + max1[j][k] > bestj + bestk + max1[bestj][bestk])) {
                      bestj = j;
                      bestk = k;
                      sol_exists = true;
                }
         }
     if (sol_exists)
          for (int i = n-1; i >= 0; i--) {
              sol[i] = who[i][bestj][bestk];
              if (sol[i] == 'A')
                 bestj -= va[i];
              if (sol[i] == 'B')
                 bestk -= vb[i];
          }
}

int main(int argc, char *argv[])
{
    ifstream in("pljacka.in");
    ofstream out("pljacka.out");
    input(in);
    solve();
    output(out);
    in.close();
    out.close();
    return 0;
}
