read_line.to_i.times do puts solve() ? "Yes" : "No" end def solve n, k, x = read_line.split.map(&.to_i) h = read_line.split.map(&.to_i64) min = h.min h.map! { |v| v - min } if h.any? { |v| v % x != 0 } return false end h.map! { |v| v // x } diff = Array.new(n - 1) { |i| h[i + 1] - h[i] } k.times.all? do |i| sum = i.step(to: diff.size - 1, by: k).sum { |j| diff[j] } if i == k - 1 && (diff.size - i) % k == 0 true elsif i == k - 1 sum >= 0 elsif (diff.size - i) % k == 0 sum <= 0 else sum == 0 end end end