from sys import stdin input = stdin.readline def op(x, y): return x+y class SegTree: def __init__(self, init_val, op, ide_ele): n = len(init_val) self.n = n self.op = op self.ide_ele = ide_ele self.num = 1 << (n - 1).bit_length() self.tree = [ide_ele] * 2 * self.num for i in range(n): self.tree[self.num + i] = init_val[i] def update(self, l, r, x): l += self.num r += self.num while l < r: if l & 1: self.tree[l] = self.op(x, self.tree[l]) l += 1 if r & 1: self.tree[r - 1] = self.op(x, self.tree[r - 1]) l >>= 1 r >>= 1 def query(self, k): ans = self.ide_ele k += self.num ans = self.op(ans, self.tree[k]) while k > 1: ans = self.op(ans, self.tree[k>>1]) k >>= 1 return ans for _ in range(int(input())): N, K, X = map(int, input().split()) H = list(map(int, input().split())) if len(set([h%X for h in H])) != 1: print("No") continue for i in range(N): H[i] //= X A = [0]*K for i, h in enumerate(H): A[i%K] += h L, R = A[:N%K], A[N%K:] if len(L) == 0: print("Yes" if len(set(R)) == 1 else "No") continue if len(set(L)) != 1 or len(set(R)) != 1: print("No") continue a, b = R[0], L[0] diff = b-a seg = SegTree(H, op, 0) for i in range(N-K+1): n = seg.query(i) if diff < n: print("No") break seg.update(i, i+K, diff-n) else: res = [seg.query(i) for i in range(N)] print("Yes" if res.count(diff) == N else "No")