#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct topic{
    char a[601];
    char b[601];
    char c[601];
    char d[601];
};

int max(int a,int b){
    if(a >= b){
        return a;
    }
    else{
        return b;
    }
}

int min(int a,int b){
    if(a <= b){
        return a;
    }
    else{
        return b;
    }
}

char out(int a,int b,int c,int d){
    int M = max(a,max(b,max(c,d)));
    int m = min(a,min(b,min(c,d)));
   if((a == M && b < M && c < M && d < M && ((b == c && c == m) || (c == d && d == m) || (b == d && d == m))) || (a == m && b >m && c >m && d > m && ((b == c && b == M) || (c == d && d == M) || (b == d && d == M)))){
        return 'A';
    }
    else if((b == M && a < M && c < M && d < M && ((a == c && c == m) || (c == d && d == m) || (a == d && d == m))) || (b == m && a >m && c >m && d > m && ((a == c && a == M) || (c == d && d == M) || (a == d && d == M)))){
        return 'B';
    }
    else if((c == M && a < M && b < M && d < M && ((b == a && a == m) || (b == d && d == m) || (a == d && d == m))) || ((c == m && a >m && b >m && d > m) && ((a ==  b && a == M) || (a == d && d == M) || (b == d && d == M)))){
        return 'C';
    }
    else if((d == M && a < M && b < M && c < M && ((b == a && a == m) || (b == c && c == m) || (a == c && c == m))) || (d == m && a >m && b >m && c > m && ((a == c && a == M) || (c == b && c == M) || (a == b && b == M)))){
        return 'D';
    }
    else{
        return 'C';
    }
}

int main() {
    int T;
    scanf("%d\n",&T);
    struct topic *V = (struct topic *)malloc(sizeof(struct topic) * T);
    if(V == NULL){
        printf("Failed malloc!");
        return -1;
    }
    for(int i = 0; i < T; i ++){
            scanf("%s\n",V[i].a);
            scanf("%s\n",V[i].b);
            scanf("%s\n",V[i].c);
            scanf("%s\n",V[i].d);
    }

    for(int i = 0; i < T; i ++){
        printf("%c\n",out(strlen(V[i].a),strlen(V[i].b),strlen(V[i].c),strlen(V[i].d)));
    }

    free(V);

    return 0;
}