#include <bits/stdc++.h>
#include <experimental/random>
#include <random>
//#include <ext/pb_ds/assoc_container.hpp>
//using namespace __gnu_pbds;
using namespace std;
using ld = long double;
using ll = long long;
const ll INF = 1e18, MOD = 1e9 + 7;
void solve();
signed main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);
int q = 1;
//cin >> q;
while (q--) {
solve();
}
}
void solve() {
ll n, l;
cin >> n >> l;
vector<ll> cnt(l + 1);
vector<ll> cord;
ll mn = INF, mx = -INF;
for (int i = 0; i < n; i++) {
ll x; cin >> x;
cnt[x]++;
cord.push_back(x);
mn = min(mn, x), mx = max(mx, x);
}
vector<ll> pref = {0};
for (auto c : cnt) {
pref.push_back(pref.back() + c);
}
sort(cord.begin(), cord.end());
cord.resize(unique(cord.begin(), cord.end()) - cord.begin());
ll m = (int)cord.size();
vector<vector<ll>> dp1(m, vector<ll>(2, INF));
vector<vector<ll>> dp2(m, vector<ll>(2, INF));
dp1[0][0] = 0;
dp2[0][1] = 0;
for (ll len = m - 1; len > 0; len--) {
vector<vector<ll>> dp1n(m, vector<ll>(2, INF));
vector<vector<ll>> dp2n(m, vector<ll>(2, INF));
for (ll i = 0; i + len < m; i++) {
ll j = i + len;
ll col = n - pref[cord[j] + 1] + pref[cord[i]] + 1;
ll fir = min(dp1[i][0] + (col + cnt[cord[i]]) * (cord[i + 1] - cord[i]),
dp1[i][1] + (cord[j] - cord[i]) * col + (col + cnt[cord[i]]) * (cord[i + 1] - cord[i]));
ll sec = min(dp1[i][0] + (cord[j] - cord[i]) * col + (col + cnt[cord[j]]) * (cord[j] - cord[j - 1]),
dp1[i][1] + (col + cnt[cord[j]]) * (cord[j] - cord[j - 1]));
dp1n[i + 1][0] = min(dp1n[i + 1][0], fir);
dp1n[i][1] = min(dp1n[i][1], sec);
fir = min(dp2[i][0] + (col + cnt[cord[i]]) * (cord[i + 1] - cord[i]),
dp2[i][1] + (cord[j] - cord[i]) * col + (col + cnt[cord[i]]) * (cord[i + 1] - cord[i]));
sec = min(dp2[i][0] + (cord[j] - cord[i]) * col + (col + cnt[cord[j]]) * (cord[j] - cord[j - 1]),
dp2[i][1] + (col + cnt[cord[j]]) * (cord[j] - cord[j - 1]));
dp2n[i + 1][0] = min(dp2n[i + 1][0], fir);
dp2n[i][1] = min(dp2n[i][1], sec);
}
dp1 = dp1n;
dp2 = dp2n;
}
vector<ll> d1(m), d2(m);
for (int i = 0; i < m; i++) {
d1[i] = min(dp1[i][0], dp1[i][1]);
d2[i] = min(dp2[i][0], dp2[i][1]);
}
ll q; cin >> q;
while (q--) {
ll s, g, t;
cin >> s >> g >> t;
t -= n;
ll x = lower_bound(cord.begin(), cord.end(), g) - cord.begin();
ll ans = INF;
if (x < m) {
ans = min(ans, abs(s - mn) + min(d1[x], d1[x]) + abs(cord[x] - g) * (n + 1));
ans = min(ans, abs(s - mx) + min(d2[x], d2[x]) + abs(cord[x] - g) * (n + 1));
}
x--;
if (x >= 0) {
ans = min(ans, abs(s - mn) + min(d1[x], d1[x]) + abs(cord[x] - g) * (n + 1));
ans = min(ans, abs(s - mx) + min(d2[x], d2[x]) + abs(cord[x] - g) * (n + 1));
}
if (ans <= t) {
cout << "Yes\n";
} else {
cout << "No\n";
}
}
}