#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mp make_pair
#define pb push_back
#define fi first
#define se second
const int N = 1e6 + 5;
struct Node{
int l, r, x, id;
};
int n, q, a[N], mn[N << 2], mx[N << 2], st[N << 2], g[N][25];
bool ans[N];
map<int, int> m;
Node query[N];
bool cmp(Node a, Node b){
return a.r < b.r;
}
void build(int l, int r, int x){
if (l == r){
mn[x] = mx[x] = a[l];
return;
}
int mid = (l + r) >> 1;
build(l, mid, x << 1);
build(mid + 1, r, x << 1 | 1);
mn[x] = min(mn[x << 1], mn[x << 1 | 1]);
mx[x] = max(mx[x << 1], mx[x << 1 | 1]);
}
int getmin(int u, int v, int l = 1, int r = n, int x = 1){
if (l > v || r < u) return INT_MAX;
if (l >= u && r <= v) return mn[x];
int mid = (l + r) >> 1;
if (v <= mid) return getmin(u, v, l, mid, x << 1);
if (u > mid) return getmin(u, v, mid + 1, r, x << 1 | 1);
return min(getmin(u, v, l, mid, x << 1), getmin(u, v, mid + 1, r, x << 1 | 1));
}
int getmax(int u, int v, int l = 1, int r = n, int x = 1){
if (l > v || r < u) return INT_MIN;
if (l >= u && r <= v) return mx[x];
int mid = (l + r) >> 1;
if (v <= mid) return getmax(u, v, l, mid, x << 1);
if (u > mid) return getmax(u, v, mid + 1, r, x << 1 | 1);
return max(getmax(u, v, l, mid, x << 1), getmax(u, v, mid + 1, r, x << 1 | 1));
}
void update(int pos, int val, int l = 1, int r = n, int x = 1){
if (l == r){
st[x] = val;
return;
}
int mid = (l + r) >> 1;
if (pos <= mid) update(pos, val, l, mid, x << 1);
else update(pos, val, mid + 1, r, x << 1 | 1);
st[x] = st[x << 1] + st[x << 1 | 1];
}
int get(int u, int v, int l = 1, int r = n, int x = 1){
if (l > v || r < u) return 0;
if (l >= u && r <= v) return st[x];
int mid = (l + r) >> 1;
if (v <= mid) return get(u, v, l, mid, x << 1);
if (u > mid) return get(u, v, mid + 1, r, x << 1 | 1);
return get(u, v, l, mid, x << 1) + get(u, v, mid + 1, r, x << 1 | 1);
}
int getgcd(int l, int r){
++l;
int k = __lg(r - l + 1);
return __gcd(g[l][k], g[r - (1 << k) + 1][k]);
}
signed main(){
cin >> n >> q;
for (int i = 1; i <= n; ++i){
cin >> a[i];
if (i >= 2) g[i][0] = abs(a[i] - a[i - 1]);
}
for (int i = 1; i <= q; ++i){
cin >> query[i].l >> query[i].r >> query[i].x;
query[i].id = i;
}
build(1, n, 1);
for (int i = 1; i <= 20; ++i){
for (int j = 2; j <= n - (1 << i) + 1; ++j){
g[j][i] = __gcd(g[j][i - 1], g[j + (1 << (i - 1))][i - 1]);
}
}
sort(query + 1, query + 1 + q, cmp);
int r = 1;
for (int i = 1; i <= q; ++i){
int u = query[i].l, v = query[i].r;
int x = query[i].x, id = query[i].id;
while (r <= v){
if (m[a[r]]){
update(m[a[r]], 0);
}
m[a[r]] = r;
update(r, 1);
++r;
}
if(u == v){
ans[id] = true;
continue;
}
if(x == 0){
ans[id] = getmin(u,v) == getmax(u,v);
}
if (v - u + 1 != get(u, v)) continue;
int curmin = getmin(u, v), curmax = getmax(u, v),cnt = get(u,v);
if (curmax != curmin + x * (v - u)) continue;
ans[id] = (getgcd(u, v) == x && cnt == v - u + 1);
}
for (int i = 1; i <= q; ++i){
cout << (ans[i] ? "YES\n" : "NO\n");
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCmNvbnN0IGludCBOID0gMWU2ICsgNTsKCnN0cnVjdCBOb2RlewogICAgaW50IGwsIHIsIHgsIGlkOwp9OwppbnQgbiwgcSwgYVtOXSwgbW5bTiA8PCAyXSwgbXhbTiA8PCAyXSwgc3RbTiA8PCAyXSwgZ1tOXVsyNV07CmJvb2wgYW5zW05dOwptYXA8aW50LCBpbnQ+IG07Ck5vZGUgcXVlcnlbTl07CmJvb2wgY21wKE5vZGUgYSwgTm9kZSBiKXsKICAgIHJldHVybiBhLnIgPCBiLnI7Cn0Kdm9pZCBidWlsZChpbnQgbCwgaW50IHIsIGludCB4KXsKICAgIGlmIChsID09IHIpewogICAgICAgIG1uW3hdID0gbXhbeF0gPSBhW2xdOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICBidWlsZChsLCBtaWQsIHggPDwgMSk7CiAgICBidWlsZChtaWQgKyAxLCByLCB4IDw8IDEgfCAxKTsKICAgIG1uW3hdID0gbWluKG1uW3ggPDwgMV0sIG1uW3ggPDwgMSB8IDFdKTsKICAgIG14W3hdID0gbWF4KG14W3ggPDwgMV0sIG14W3ggPDwgMSB8IDFdKTsKfQppbnQgZ2V0bWluKGludCB1LCBpbnQgdiwgaW50IGwgPSAxLCBpbnQgciA9IG4sIGludCB4ID0gMSl7CiAgICBpZiAobCA+IHYgfHwgciA8IHUpIHJldHVybiBJTlRfTUFYOwogICAgaWYgKGwgPj0gdSAmJiByIDw9IHYpIHJldHVybiBtblt4XTsKICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICBpZiAodiA8PSBtaWQpIHJldHVybiBnZXRtaW4odSwgdiwgbCwgbWlkLCB4IDw8IDEpOwogICAgaWYgKHUgPiBtaWQpIHJldHVybiBnZXRtaW4odSwgdiwgbWlkICsgMSwgciwgeCA8PCAxIHwgMSk7CiAgICByZXR1cm4gbWluKGdldG1pbih1LCB2LCBsLCBtaWQsIHggPDwgMSksIGdldG1pbih1LCB2LCBtaWQgKyAxLCByLCB4IDw8IDEgfCAxKSk7Cn0KaW50IGdldG1heChpbnQgdSwgaW50IHYsIGludCBsID0gMSwgaW50IHIgPSBuLCBpbnQgeCA9IDEpewogICAgaWYgKGwgPiB2IHx8IHIgPCB1KSByZXR1cm4gSU5UX01JTjsKICAgIGlmIChsID49IHUgJiYgciA8PSB2KSByZXR1cm4gbXhbeF07CiAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgaWYgKHYgPD0gbWlkKSByZXR1cm4gZ2V0bWF4KHUsIHYsIGwsIG1pZCwgeCA8PCAxKTsKICAgIGlmICh1ID4gbWlkKSByZXR1cm4gZ2V0bWF4KHUsIHYsIG1pZCArIDEsIHIsIHggPDwgMSB8IDEpOwogICAgcmV0dXJuIG1heChnZXRtYXgodSwgdiwgbCwgbWlkLCB4IDw8IDEpLCBnZXRtYXgodSwgdiwgbWlkICsgMSwgciwgeCA8PCAxIHwgMSkpOwp9CnZvaWQgdXBkYXRlKGludCBwb3MsIGludCB2YWwsIGludCBsID0gMSwgaW50IHIgPSBuLCBpbnQgeCA9IDEpewogICAgaWYgKGwgPT0gcil7CiAgICAgICAgc3RbeF0gPSB2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIGlmIChwb3MgPD0gbWlkKSB1cGRhdGUocG9zLCB2YWwsIGwsIG1pZCwgeCA8PCAxKTsKICAgIGVsc2UgdXBkYXRlKHBvcywgdmFsLCBtaWQgKyAxLCByLCB4IDw8IDEgfCAxKTsKICAgIHN0W3hdID0gc3RbeCA8PCAxXSArIHN0W3ggPDwgMSB8IDFdOwp9CmludCBnZXQoaW50IHUsIGludCB2LCBpbnQgbCA9IDEsIGludCByID0gbiwgaW50IHggPSAxKXsKICAgIGlmIChsID4gdiB8fCByIDwgdSkgcmV0dXJuIDA7CiAgICBpZiAobCA+PSB1ICYmIHIgPD0gdikgcmV0dXJuIHN0W3hdOwogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIGlmICh2IDw9IG1pZCkgcmV0dXJuIGdldCh1LCB2LCBsLCBtaWQsIHggPDwgMSk7CiAgICBpZiAodSA+IG1pZCkgcmV0dXJuIGdldCh1LCB2LCBtaWQgKyAxLCByLCB4IDw8IDEgfCAxKTsKICAgIHJldHVybiBnZXQodSwgdiwgbCwgbWlkLCB4IDw8IDEpICsgZ2V0KHUsIHYsIG1pZCArIDEsIHIsIHggPDwgMSB8IDEpOwp9CmludCBnZXRnY2QoaW50IGwsIGludCByKXsKICAgICsrbDsKICAgIGludCBrID0gX19sZyhyIC0gbCArIDEpOwogICAgcmV0dXJuIF9fZ2NkKGdbbF1ba10sIGdbciAtICgxIDw8IGspICsgMV1ba10pOwp9CnNpZ25lZCBtYWluKCl7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKXsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBpZiAoaSA+PSAyKSBnW2ldWzBdID0gYWJzKGFbaV0gLSBhW2kgLSAxXSk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyArK2kpewogICAgICAgIGNpbiA+PiBxdWVyeVtpXS5sID4+IHF1ZXJ5W2ldLnIgPj4gcXVlcnlbaV0ueDsKICAgICAgICBxdWVyeVtpXS5pZCA9IGk7CiAgICB9CiAgICBidWlsZCgxLCBuLCAxKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDIwOyArK2kpewogICAgICAgIGZvciAoaW50IGogPSAyOyBqIDw9IG4gLSAoMSA8PCBpKSArIDE7ICsrail7CiAgICAgICAgICAgIGdbal1baV0gPSBfX2djZChnW2pdW2kgLSAxXSwgZ1tqICsgKDEgPDwgKGkgLSAxKSldW2kgLSAxXSk7CiAgICAgICAgfQogICAgfQogICAgc29ydChxdWVyeSArIDEsIHF1ZXJ5ICsgMSArIHEsIGNtcCk7CiAgICBpbnQgciA9IDE7IAogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgKytpKXsKICAgICAgICBpbnQgdSA9IHF1ZXJ5W2ldLmwsIHYgPSBxdWVyeVtpXS5yOwogICAgICAgIGludCB4ID0gcXVlcnlbaV0ueCwgaWQgPSBxdWVyeVtpXS5pZDsgICAKICAgICAgICB3aGlsZSAociA8PSB2KXsKICAgICAgICAgICAgaWYgKG1bYVtyXV0pewogICAgICAgICAgICAgICAgdXBkYXRlKG1bYVtyXV0sIDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG1bYVtyXV0gPSByOwogICAgICAgICAgICB1cGRhdGUociwgMSk7CiAgICAgICAgICAgICsrcjsKICAgICAgICB9CiAgICAgICAgaWYodSA9PSB2KXsKICAgICAgICAgICAgYW5zW2lkXSA9IHRydWU7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZih4ID09IDApewogICAgICAgICAgICBhbnNbaWRdID0gZ2V0bWluKHUsdikgPT0gZ2V0bWF4KHUsdik7CiAgICAgICAgfQogICAgICAgIGlmICh2IC0gdSArIDEgIT0gZ2V0KHUsIHYpKSBjb250aW51ZTsgCiAgICAgICAgaW50IGN1cm1pbiA9IGdldG1pbih1LCB2KSwgY3VybWF4ID0gZ2V0bWF4KHUsIHYpLGNudCA9IGdldCh1LHYpOwogICAgICAgIGlmIChjdXJtYXggIT0gY3VybWluICsgeCAqICh2IC0gdSkpIGNvbnRpbnVlOwogICAgICAgIGFuc1tpZF0gPSAoZ2V0Z2NkKHUsIHYpID09IHggJiYgY250ID09IHYgLSB1ICsgMSk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyArK2kpewogICAgICAgIGNvdXQgPDwgKGFuc1tpXSA/ICJZRVNcbiIgOiAiTk9cbiIpOwogICAgfQp9Cg==