#pragma comment(linker,"/STACK:102400000,102400000") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define X first #define Y second #define mp make_pair #define pb push_back #define mset(a) memset(a,0,sizeof(a)) #define mmset(a) memset(a,-1,sizeof(a)) #define mcpy(a,b) memcpy(a,b,sizeof(a)) #define forit(it,x) for(__typeof((x).begin()) it=(x).begin();it!=(x).end();it++) struct person{ char name[2000] ; int old; }; person A[20000]; bool cmp( person x , person y ) { return x.old > y.old ; } int solve( char *x ){ int len = strlen(x); int ss[5] = {0}; int flag = 1; int pos = 3 ; int old = 0 ; for(int i = len - 1 ; i >= 0 && flag <= 4; --i) { ++ flag ; ss[pos--] = x[i] - '0'; } pos = 3; int t = 1 ; while(pos >= 0) { old += ss[pos--] * t ; t *= 10 ; } return old; } void cal( int x ){ int len = strlen(A[x].name); int flag = 1 ; for(int i = len - 1 ; i >= 0 && flag; --i) { ++ flag ; //cout << A[x].name[i] << endl; if(A[x].name[i] == ' ') { flag = 0 ; } A[x].name[i] = '\0'; } } int main() { //ios:: sync_with_stdio(false); //cin.tie(0); int T; scanf("%d",&T); int n ; while(T--) { scanf("%d",&n); getchar(); for(int i = 1 ; i <= n ; ++i) { gets(A[i].name); //cout << A[1].name << endl; A[i].old = solve(A[i].name); //cout << A[i].old << endl; } sort( A + 1 , A + 1 + n , cmp ); for(int i = 1 ; i <= n ; ++i) { cal( i ); } for(int i = 1 ; i <= n ; ++i) cout << A[i].name << endl; } return 0 ; }