def main(io) s = io.get(String) t = s.chars.map(&.to_i) u = Array.new(9, 0) t.each do |ti| u[ti-1] += 1 end (0...9).each do |i| next if u[i] == 4 v = u.dup v[i] += 1 io.put i+1 if agari?(v) end end def agari?(v) return true if v.all? { |vi| vi == 0 || vi == 2 } (0...9).any? do |i| next if v[i] < 2 w = v.dup w[i] -= 2 agari_without_atama?(w) end end def agari_without_atama?(w) (0...9).each do |i| w[i] -= 3 if w[i] >= 3 end while w.sum > 0 x = w.index { |wi| wi > 0 } return false if x.nil? return false if x >= 7 || w[x+1] == 0 || w[x+2] == 0 w[x] -= 1 w[x+1] -= 1 w[x+2] -= 1 end true end class ProconIO def initialize @buf = [] of String @index = 0 end def get(k : T.class = Int32) forall T get_v(k) end def get(*ks : T.class) forall T ks.map { |k| get_v(k) } end macro define_getn {% for i in (2..9) %} def get{{i}}(k : T.class = Int32) forall T get({% for j in (1..i) %}k{% if j < i %}, {% end %}{% end %}) end {% end %} end define_getn def get_a(n : Int, k : T.class = Int32) forall T Array.new(n) { get_v(k) } end def get_c(n : Int, k : T.class = Int32) forall T get_a(n, k) end def get_c(n : Int, *ks : T.class) forall T a = Array.new(n) { get(*ks) } ks.map_with_index { |_, i| a.map { |e| e[i] } } end macro define_getn_c {% for i in (2..9) %} def get{{i}}_c(n : Int, k : T.class = Int32) forall T get_c(n, {% for j in (1..i) %}k{% if j < i %}, {% end %}{% end %}) end {% end %} end define_getn_c def get_m(r : Int, c : Int, k : T.class = Int32) forall T Array.new(r) { get_a(c, k) } end def put(*vs) vs.each.with_index do |v, i| put_v(v) print i < vs.size - 1 ? " " : "\n" end end def put_e(*vs) put(*vs) exit end private def get_v(k : Int32.class); get_token.to_i32; end private def get_v(k : Int64.class); get_token.to_i64; end private def get_v(k : String.class); get_token; end private def get_token if @buf.size == @index @buf = read_line.split @index = 0 end v = @buf[@index] @index += 1 v end private def put_v(vs : Enumerable) vs.each_with_index do |v, i| print v print " " if i < vs.size - 1 end end private def put_v(v) print v end end main(ProconIO.new)