# frozen_string_literal: true Card = Struct.new(:to_s, :mark, :number) class String def to_card mark = case self[0] when 'D' then 0 when 'C' then 1 when 'H' then 2 when 'S' then 3 end number = case self[1] when 'A' then 1 when 'T' then 10 when 'J' then 11 when 'Q' then 12 when 'K' then 13 else self[1].to_i end Card.new(self, mark, number) end end def solve MN.map(&:to_card) .group_by { _1.mark } .map { |k, v| { k => v.sort { |a, b| a.number <=> b.number } } } .reduce(:merge) .to_a .sort { |a, b| a[0] <=> b[0] } .map { _1[1] } .flatten .map(&:to_s) .join(" ") end N = gets.to_i MN = gets.chomp.split puts solve