#include using namespace std; bool check() { int n, k, x; cin >> n >> k >> x; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n; i++) { if (a[i] % x != a[0] % x) return false; } for (int i = 0; i < k; i++) { vector d; for (int j = i; j < n; j += k) { if (j) d.push_back(a[j] - a[j - 1]); } long long sum = accumulate(d.begin(), d.end(), 0LL); if (sum > 0 && i != 0 || sum < 0 && n % k != 0) // 不可能把 d 的和调整为 0 return false; if (i == 0 && n % k == 0) // 这一组里有两个* continue; if (sum > 0) d[0] -= sum; else if (sum < 0) d.back() -= sum; long long s = 0; for (long long t : d) { s += t; if (s > 0) return false; } } return true; } int main() { int T; cin >> T; while (T--) { cout << (check() ? "Yes" : "No") << '\n'; } }