def ask x, y, z puts "? #{x} #{y} #{z}" $>.flush gets.to_i end def sho x, y, z puts "! #{x} #{y} #{z}" end ans = [0] * 3 3.times do |i| lb, ub = -101, 100 until lb + 1 == ub mb = lb + ub >> 1 q1 = [0, 0, 0] q1[i] = mb q2 = [0, 0, 0] q2[i] = mb + 1 if ask(*q1) <= ask(*q2) ub = mb else lb = mb end end ans[i] = ub end sho *ans