#include <bits/stdc++.h>
struct range {
  int32_t l, r;
};
void solve() {
  size_t n;
  int32_t k, l;
  std::cin >> n >> k >> l;
  range cur{0, k * 2 - 1};
  bool ok = true;
  for (size_t i = 0; i < n; ++i) {
    int32_t d;
    std::cin >> d;
    d += k;
    if (d <= l) {
      cur.l = 0;
      cur.r = k * 2 - 1;
      continue;
    }
    range next{d - l, 2 * k - (d - l)};
    cur.l = std::max(cur.l + 1, next.l);
    cur.r = std::min(cur.r + 1, next.r);
    ok &= cur.l <= cur.r;
  }
  if (ok) {
    std::cout << "Yes\n";
  } else {
    std::cout << "No\n";
  }
}
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  size_t t;
  std::cin >> t;
  for (size_t i = 0; i < t; ++i) {
    solve();
  }
}
