lib C fun strtoll(s : UInt8*, p : UInt8**, b : Int32) : Int64 end class String def to_i64 C.strtoll(self, nil, 10) end end def enumrate_combination(n) res = Array.new(n + 1) { Array.new(n + 1, 0i64) } (0..n).each do |i| res[i][0] = res[i][i] = 1 end (1..n).each do |i| (1...i).each do |j| res[i][j] = res[i - 1][j - 1] + res[i - 1][j] end end res end Comb = enumrate_combination(26) def calc_len(n) sum = 0i64 (3..100).each do |len| tmp = (3..len).step(3).sum do |cnt5| Comb[len - 1][cnt5 - 1] end return {len, n - sum} if sum + tmp >= n sum += tmp end end n = read_line.to_i64 len, num = calc_len(n).not_nil! STDERR.puts([len, num]) (0...2**len).each do |i| num -= 1 if i.popcount % 3 == 0 && i.bit(0) == 1 if num == 0 puts i.to_s(2).rjust(len, '0').tr("01", "35") exit end end