#include <bits/stdc++.h>
#define forn(i,n) for(int i=0;i<int(n);++i)
#define fort(i,n) for(int i=0;i<=int(n);++i)
#define fori(i,a,n) for(int i=a;i<int(n);++i)
#define forit(i,a,n) for(int i=a;i<=int(n);++i)
#define ALL(v) v.begin(),v.end()
#define SZ(v) (int)v.size()
#define DBG(a) cerr<<#a<<" = "<<(a)<<endl
#define DBGA(a) cerr<<#a<<" = "<<(a)<<", ";
#define DBG2(a,b) do{DBGA(a)DBG(b);}while(0)
#define DBG3(a,b,c) do{DBGA(a)DBGA(b)DBG(c);}while(0)
#define DBG4(a,b,c,d) do{DBGA(a)DBGA(b)DBGA(c)DBG(d);}while(0)
#define LINE cerr<<"===================================="<<endl
using namespace std;
template<typename T>
ostream &operator<<(ostream &os, const vector<T> &v){
os<<"[";
forn(i,v.size()){
if(i) os<<" ";
os<<v[i];
}
os<<"]";
return os;
}
typedef long long ll;
typedef long double ld;
const int MAXK = 1005, L=0, R=1;
const ll INF = 1000000000000000000;
int k;
vector<int> xs, cs, sl, sr; // suma a la izquierda, suma a la derecha
ll dp[2][MAXK][MAXK][2]; // S, L, R, E
ll run(int s, int l, int r, int e){
//~ if(r<l) return INF;
if(l<0) return INF;
if(r>=k) return INF;
//~ DBG4(s,l,r,e);
ll &ret = dp[s][l][r][e];
if(dp[s][l][r][e]!=-1) return dp[s][l][r][e];
if(l==0&&r==k-1&&s==e){
//~ DBG("punto inicial");
return ret = 0; // este es el punto inicial
}
//~ if(e==L&&l==0) return ret = INF; // no se puede terminar en la izquierda sin hacer nada
//~ if(e==R&&r==k-1) return ret = INF; // no se puede terminar en la derecha sin hacer nada
ret = INF;
//~ DBG3(e, L, R);
if(e==L){
ll c = sl[l]+sr[r+1]+1;
if(l>0){
ll aux = run(s,l-1,r,e)+c*(xs[l]-xs[l-1]);
ret = min(ret,aux);
}
if(r<k-1){
ll aux = run(s,l,r+1,!e)+c*(xs[r+1]-xs[l]);
ret = min(ret,aux);
}
} else if(e==R){
ll c = sl[l]+sr[r+1]+1;
if(r<k-1){
ll aux = run(s,l,r+1,e)+c*(xs[r+1]-xs[r]);
ret = min(ret,aux);
}
if(l>0){
ll aux = run(s,l-1,r,!e)+c*(xs[r]-xs[l-1]);
ret = min(ret,aux);
}
} else assert(0);
//~ DBG(ret);
return ret;
}
void solve(){
forn(a,2)forn(b,MAXK)forn(c,MAXK)forn(d,2) dp[a][b][c][d] = -1;
int n, a;
cin>>n>>a;
{
map<int,int> cnt;
while(n--){
int x;
cin>>x;
++cnt[x];
}
for(auto it: cnt){
xs.push_back(it.first);
cs.push_back(it.second);
}
}
k = SZ(xs);
//~ DBG2(xs,cs);
sl.resize(k+1);
sr.resize(k+1);
forn(i,k) sl[i+1]=sl[i]+cs[i];
for(int i=k-1;i>=0;--i) sr[i]=sr[i+1]+cs[i];
//~ DBG2(sl, sr);
int q;
cin>>q;
while(q--){
int S, G, T;
cin>>S>>G>>T;
if(k >= MAXK){
cout<<"No\n";
continue;
}
int p = int(lower_bound(ALL(xs),G)-xs.begin());
int l=p-1,r=p;
if(p < k && xs[p] == G) l=r=p;
else if(p==0) l=r=0;
else if(p==k) l=r=k-1;
ll best=INF, c=sl.back()+1;
//~ DBG3(p,l,r);
//~ DBG3(G,xs[l],xs[r]);
// L-L
//~ LINE;
ll aux = run(L,l,l,L);
//~ DBG2("LL", aux);
aux += c*abs(xs[l]-G)+abs(xs[0]-S);
best=min(best,aux);
// L-R
//~ LINE;
aux = run(L,r,r,R);
//~ DBG2("LR", aux);
aux += c*abs(xs[r]-G)+abs(xs[0]-S);
best=min(best,aux);
// R-L
//~ LINE;
aux = run(R,l,l,L);
//~ DBG2("RL", aux);
aux+=c*abs(xs[l]-G)+abs(xs.back()-S);
best=min(best,aux);
// R-R
//~ LINE;
aux = run(R,r,r,R);
//~ DBG2("RR", aux);
aux+=c*abs(xs[r]-G)+abs(xs.back()-S);
best=min(best,aux);
//~ DBG(best);
best += sl.back();
//~ DBG(best);
if(best<=T) cout<<"Yes\n";
else cout<<"No\n";
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
#ifdef LOCAL
assert(freopen("C.in", "r", stdin));
//~ freopen("output.out", "w", stdout);
#endif
//~ #ifdef LOCAL
//~ int tcs; cin>>tcs;
//~ while(tcs--)
//~ #endif
solve();
return 0;
}