a = Array.new(8) { read_line.chars.map(&.to_i) } puts dfs(a[0], a[1..], 0) ? "Yes" : "No" def dfs(cur, a, pos) if pos == a.size return cur.all?(0) end 8.times do |i| 8.times do |j| cur[j] -= a[pos][(i + j) % 8] end if cur.all? { |v| v >= 0 } if dfs(cur, a, pos + 1) return true end end 8.times do |j| cur[j] += a[pos][(i + j) % 8] end end return false end