INSTRUCTIONS = ARGF.read.split("\n").map { _1.split(/\s+/) }

# INSTRUCTIONS.each do |instruction, *args|
#   a, b = *args
#   case instruction
#   when "inp"
#     puts "#{a} = input.shift"
#   when "add"
#     puts "#{a} += #{b}"
#   when "mul"
#     puts "#{a} *= #{b}"
#   when "div"
#     puts "#{a} = (#{a} / #{b}.to_f).floor"
#   when "mod"
#     puts "#{a} %= #{b}"
#   when "eql"
#     puts "#{a} = #{a} == #{b} ? 1 : 0"
#   else
#     fail
#   end
# end
# exit

VARS = %w[ w x y z ]
def run(input)
  vars = Hash.new(0)

  INSTRUCTIONS.each do |instruction, *args|
    a, b = *args
    b = VARS.include?(b) ? vars[b] : b.to_i
    case instruction
    when "inp"
      vars[a] = input.shift
    when "add"
      vars[a] += b
    when "mul"
      vars[a] *= b
    when "div"
      vars[a] = (vars[a] / b.to_f).floor
    when "mod"
      vars[a] %= b
    when "eql"
      vars[a] = vars[a] == b ? 1 : 0
    else
      fail
    end
  end

  vars
end

99999999999999.downto(11111111111111).lazy.map(&:to_s).reject { _1.include?(?0) }.each do |input|
  vars = run(input.chars.map(&:to_i))
  if vars[?z].zero?
    puts input
    exit
  end
end