// yukicoder: No.267 トランプソート // 2019.4.19 bal4u #include #include #if 1 #define gc() getchar_unlocked() #define pc(c) putchar_unlocked(c) #else #define gc() getchar() #define pc(c) putchar(c) #endif int in() { int n = 0; int c = gc(); do n = 10 * n + (c & 0xf), c = gc(); while (c >= '0'); return n; } void outs(char *s) { while (*s) pc(*s++); } typedef struct { char c[3]; int n; } T; T t[55]; int N; int mark[128]; int num[128]; int cmp(const void *a, const void *b) { return ((T *)a)->n - ((T *)b)->n; } int main() { int i, a, b; mark['D'] = 1, mark['C'] = 2, mark['H'] = 3, mark['S'] = 4; num['A'] = 1, num['T'] = 10, num['J'] = 11, num['Q'] = 12, num['K'] = 13; for (i = 2; i <= 9; i++) num['0'+i] = i; N = in(); for (i = 0; i < N; i++) { t[i].c[0] = a = gc(), t[i].c[1] = b = gc(), gc(); t[i].n = (mark[a]<<5) | num[b]; } qsort(t, N, sizeof(T), cmp); outs(t[0].c); for (i = 1; i < N; i++) pc(' '), outs(t[i].c); pc('\n'); return 0; }