module main; import std; // トランプカードの構造体 struct Card { char suit; char number; this(string s) { suit = s[0]; number = s[1]; } int opCmp(ref const Card rhs) { static suits = ['D' : 0, 'C' : 1, 'H' : 2, 'S' : 3]; static numbers = [ 'A' : 1, '2' : 2, '3' : 3, '4' : 4, '5' : 5, '6' : 6, '7' : 7, '8' : 8, '9' : 9, 'T' : 10, 'J' : 11, 'Q' : 12, 'K' : 13 ]; if (suit != rhs.suit) return suits[suit] - suits[rhs.suit]; if (number != rhs.number) return numbers[number] - numbers[rhs.number]; return 0; } string toString() { return [suit, number].idup; } } void main() { // 入力 int N = readln.chomp.to!int; auto cards = readln.split.map!(s => Card(s)).array; // 答えの計算 cards.sort; // 答えの出力 writefln("%(%s %)", cards); }