#include<bits/stdc++.h> #define re register #define int long long
usingnamespace std;
constint N = 2e5 + 10; int n,k,q; int arr[N],c[N]; bool ans[N];
structQuery{ int r,id; }; vector<Query> Q[N];
inlineintread(){ int r = 0,w = 1; char c = getchar(); while (c < '0' || c > '9'){ if (c == '-') w = -1; c = getchar(); } while (c >= '0' && c <= '9'){ r = (r << 3) + (r << 1) + (c ^ 48); c = getchar(); } return r * w; }
structBIT{ #define lowbit(x) (x & -x)
int tr[N];
inlinevoidmodify(int x,int k){ for (re int i = x;i <= n;i += lowbit(i)) tr[i] += k; }
inlineintquery(int x){ int res = 0; for (re int i = x;i;i -= lowbit(i)) res += tr[i]; return res; }
#undef lowbit }T[11];
signedmain(){ n = read(),k = read(); for (re int i = 1;i <= n;i++) arr[i] = read(); for (re int i = 1;i <= n;i++){ c[i] = arr[i]; for (re int j = i;j <= i + k - 1;j++) arr[j] -= c[i]; } for (re int ty = 0;ty < k;ty++){ int be = ty; if (!be) be = k; for (re int i = be;i <= n;i += k){ T[ty].modify(i,c[i]); T[ty].modify(i + 1,-c[i]); } } q = read(); for (re int i = 1;i <= q;i++){ int l,r; l = read(),r = read(); Q[l].push_back({r,i}); } for (re int i = 1;i <= n;i++){ int be = i % k; for (auto p:Q[i]){ bool falg = true; int x = p.r - k + 2; for (re int j = x;j <= p.r;j++){ int val = T[j % k].query(j); if (val){ falg = false; break; } } ans[p.id] = falg; } int del = T[be].query(i); T[be].modify(1,-del); T[(be + 1) % k].modify(1,del); } for (re int i = 1;i <= q;i++){ if (ans[i]) puts("Yes"); elseputs("No"); } return0; }