#include <bits/stdc++.h>
using namespace std;
#define ALL(A) A.begin(), A.end()
#define FOR(i, a, b) for(int i = (a); i <= (int)(b); i++)
#define FORD(i, a, b) for(int i = (a); i >= (int)b; i--)
#define BIT(mask, i) ((mask>>(i))&1)
#define fi first
#define se second
#define file(name) if (fopen (name".inp", "r") ) { freopen (name".inp", "r", stdin); freopen (name".out", "w", stdout); }
template <class A, class B> bool mini(A &a, B b) {if (a > b) {a = b; return 1;} return 0;}
template <class A, class B> bool maxi(A &a, B b) {if (a < b) {a = b; return 1;} return 0;}
const int oo = (int) 1e9;
const long long INF = (long long) 1e18;
const int N = 4e5 + 5;
const int LG = (int) __lg(N) + 1;
int n, m, q;
int a[N];
int L[N], R[N], X[N], Y[N];
struct Queries {
int p, u, v, id;
bool operator <(const Queries &e) const {
return p < e.p;
}
} Q[N];
namespace sub1 {
bool checksub() {
return max({n, m, q}) <= 5000;
}
int b[N];
void solve() {
FOR(t, 1, q) {
int p = Q[t].p, u = Q[t].u, v = Q[t].v;
b[p] = a[p];
FOR(i, u, v) if(L[i] <= p && p <= R[i] && b[p] == X[i]) {
b[p] = X[i] + Y[i];
}
cout << b[p] << "\n";
}
}
}
namespace sub2 {
bool checksub() {
FOR(i, 1, m) {
if(L[i] != 1 || R[i] != n) return 0;
}
FOR(i, 1, q) {
if(Q[i].u != 1 || Q[i].v != m) return 0;
}
return 1;
}
int ans[N];
map <int, vector <int>> val;
void solve() {
FOR(i, 1, m) val[X[i]].push_back(i);
FOR(i, 1, n) {
int cur = a[i];
int j = 0;
while(j <= m) {
int nej = upper_bound(ALL(val[cur]), j) - val[cur].begin();
if(nej == val[cur].size()) break;
int ind = val[cur][nej];
cur+= Y[ind];
j = ind;
}
ans[i] = cur;
}
FOR(i, 1, q) cout << ans[Q[i].p] << "\n";
}
}
namespace sub3 {
bool checksub() {
if(max(n, m) > 10000) return 0;
FOR(i, 1, m) if(L[i] != 1 || R[i] != n) return 0;
return 1;
}
vector <int> pos[N];
int last[N];
int nxt[N][LG];
void prep() {
FOR(i, 1, m) pos[X[i]].push_back(i);
FOR(i, 1, (int)1e5) pos[i].push_back(m + 1);
memset(last, 0x3f, sizeof last);
FORD(i, m, 1) {
nxt[i][0] = last[X[i] + Y[i]];
last[X[i]] = i;
}
for(int j = 1; (1 << j) <= m; j++) FOR(i, 1, m) {
if(nxt[i][j - 1] > m) nxt[i][j] = oo;
else if(nxt[nxt[i][j - 1]][j - 1] > m) nxt[i][j] = oo;
else nxt[i][j] = nxt[nxt[i][j - 1]][j - 1];
}
}
void solve() {
prep();
FOR(i, 1, q) {
int p = Q[i].p, u = Q[i].u, v = Q[i].v;
int res = a[p];
int l = pos[res][lower_bound(ALL(pos[res]), u) - pos[res].begin()];
if(l <= v) {
res = X[l] + Y[l];
int z = __lg(m);
FORD(s, z, 0) if(nxt[l][s] <= v) {
l = nxt[l][s];
res = X[l] + Y[l];
}
}
cout << res << "\n";
}
}
}
namespace sub5 {
struct Ope {
int x, y, l, r, id;
bool operator <(const Ope &e) const {
return l < e.l;
}
} ope[N];
const int BLOCK = 320;
struct Events {
int k, pos, y;
bool operator <(const Events &e) const {
return k < e.k;
}
} events[N];
int cnt = 0;
pair <int, int> val[N];
int f[BLOCK + 5][(int)1e5 + 5];
void prep() {
FOR(i, 1, m) {
events[++ cnt] = {ope[i].l, i, ope[i].y};
events[++ cnt] = {ope[i].r + 1, i, 0};
val[i].first = ope[i].x;
}
sort(Q + 1, Q + 1 + q);
sort(events + 1, events + 1 + cnt);
FOR(i, 0, BLOCK) FOR(v, 1, (int)1e5) f[i][v] = v;
}
inline void update(int pos, int y) {
val[pos].se = y;
int b = pos / BLOCK;
int L = b * BLOCK, R = min(m, (b + 1) * BLOCK) - 1;
FOR(i, L, R) f[b][val[i].fi] = val[i].fi;
FORD(i, R, L) {
int x = val[i].fi, tmp = val[i].se;
f[b][x] = f[b][x + tmp];
}
}
inline int query(int pos, int l, int r) {
int res = a[pos];
int bl = l / BLOCK, br = r / BLOCK;
if(bl == br) {
FOR(i, l, r) if(val[i].fi == res) res+= val[i].se;
} else {
FOR(i, l, (bl + 1) * BLOCK - 1) if(val[i].fi == res) res+= val[i].se;
FOR(i, bl + 1, br - 1) res = f[i][res];
FOR(i, br * BLOCK, r) if(val[i].fi == res) res+= val[i].se;
}
return res;
}
int ans[N];
void solve() {
FOR(i, 1, m) ope[i] = {X[i], Y[i], L[i], R[i], i};
prep();
int j = 1;
FOR(i, 1, q) {
int p = Q[i].p, u = Q[i].u, v = Q[i].v;
while(j <= cnt && events[j].k <= p) {
update(events[j].pos, events[j].y);
j++;
}
ans[Q[i].id] = query(p, u, v);
}
FOR(i, 1, q) cout << ans[i] << "\n";
}
}
void process() {
cin >> n >> m;
FOR(i, 1, n) cin >> a[i];
FOR(i, 1, m) cin >> L[i] >> R[i] >> X[i] >> Y[i];
cin >> q;
FOR(i, 1, q) cin >> Q[i].p >> Q[i].u >> Q[i].v, Q[i].id = i;
// if(sub1::checksub()) return sub1::solve();
// if(sub2::checksub()) return sub2::solve();
// if(sub3::checksub()) return sub3::solve();
return sub5::solve();
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr); // cout.tie(nullptr);
file("cquery");
process();
return (0 ^ 0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgQUxMKEEpIEEuYmVnaW4oKSwgQS5lbmQoKQojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSk7IGkgPD0gKGludCkoYik7IGkrKykKI2RlZmluZSBGT1JEKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKTsgaSA+PSAoaW50KWI7IGktLSkKI2RlZmluZSBCSVQobWFzaywgaSkgKChtYXNrPj4oaSkpJjEpCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBmaWxlKG5hbWUpICBpZiAoZm9wZW4gKG5hbWUiLmlucCIsICJyIikgKSB7IGZyZW9wZW4gKG5hbWUiLmlucCIsICJyIiwgc3RkaW4pOyBmcmVvcGVuIChuYW1lIi5vdXQiLCAidyIsIHN0ZG91dCk7IH0KdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+IGJvb2wgbWluaShBICZhLCBCIGIpICB7aWYgKGEgPiBiKSB7YSA9IGI7IHJldHVybiAxO30gcmV0dXJuIDA7fQp0ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQj4gYm9vbCBtYXhpKEEgJmEsIEIgYikgIHtpZiAoYSA8IGIpIHthID0gYjsgcmV0dXJuIDE7fSByZXR1cm4gMDt9CmNvbnN0IGludCBvbyA9IChpbnQpIDFlOTsKY29uc3QgbG9uZyBsb25nIElORiA9IChsb25nIGxvbmcpIDFlMTg7CmNvbnN0IGludCBOID0gNGU1ICsgNTsKY29uc3QgaW50IExHID0gKGludCkgX19sZyhOKSArIDE7CgppbnQgbiwgbSwgcTsKaW50IGFbTl07CmludCBMW05dLCBSW05dLCBYW05dLCBZW05dOwpzdHJ1Y3QgUXVlcmllcyB7CiAgICBpbnQgcCwgdSwgdiwgaWQ7CgogICAgYm9vbCBvcGVyYXRvciA8KGNvbnN0IFF1ZXJpZXMgJmUpIGNvbnN0IHsKICAgICAgICByZXR1cm4gcCA8IGUucDsKICAgIH0KfSBRW05dOwoKbmFtZXNwYWNlIHN1YjEgewogICAgYm9vbCBjaGVja3N1YigpIHsKICAgICAgICByZXR1cm4gbWF4KHtuLCBtLCBxfSkgPD0gNTAwMDsKICAgIH0KCiAgICBpbnQgYltOXTsKCiAgICB2b2lkIHNvbHZlKCkgewogICAgICAgIEZPUih0LCAxLCBxKSB7CiAgICAgICAgICAgIGludCBwID0gUVt0XS5wLCB1ID0gUVt0XS51LCB2ID0gUVt0XS52OwogICAgICAgICAgICBiW3BdID0gYVtwXTsKCiAgICAgICAgICAgIEZPUihpLCB1LCB2KSBpZihMW2ldIDw9IHAgJiYgcCA8PSBSW2ldICYmIGJbcF0gPT0gWFtpXSkgewogICAgICAgICAgICAgICAgYltwXSA9IFhbaV0gKyBZW2ldOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb3V0IDw8IGJbcF0gPDwgIlxuIjsKICAgICAgICB9CiAgICB9Cn0KCm5hbWVzcGFjZSBzdWIyIHsKICAgIGJvb2wgY2hlY2tzdWIoKSB7CiAgICAgICAgRk9SKGksIDEsIG0pIHsKICAgICAgICAgICAgaWYoTFtpXSAhPSAxIHx8IFJbaV0gIT0gbikgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIEZPUihpLCAxLCBxKSB7CiAgICAgICAgICAgIGlmKFFbaV0udSAhPSAxIHx8IFFbaV0udiAhPSBtKSByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaW50IGFuc1tOXTsKICAgIG1hcCA8aW50LCB2ZWN0b3IgPGludD4+IHZhbDsKCiAgICB2b2lkIHNvbHZlKCkgewogICAgICAgIEZPUihpLCAxLCBtKSB2YWxbWFtpXV0ucHVzaF9iYWNrKGkpOwoKICAgICAgICBGT1IoaSwgMSwgbikgewogICAgICAgICAgICBpbnQgY3VyID0gYVtpXTsKICAgICAgICAgICAgaW50IGogPSAwOwoKICAgICAgICAgICAgd2hpbGUoaiA8PSBtKSB7CiAgICAgICAgICAgICAgICBpbnQgbmVqID0gdXBwZXJfYm91bmQoQUxMKHZhbFtjdXJdKSwgaikgLSB2YWxbY3VyXS5iZWdpbigpOwogICAgICAgICAgICAgICAgaWYobmVqID09IHZhbFtjdXJdLnNpemUoKSkgYnJlYWs7CgogICAgICAgICAgICAgICAgaW50IGluZCA9IHZhbFtjdXJdW25lal07CgogICAgICAgICAgICAgICAgY3VyKz0gWVtpbmRdOwogICAgICAgICAgICAgICAgaiA9IGluZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYW5zW2ldID0gY3VyOwogICAgICAgIH0KCiAgICAgICAgRk9SKGksIDEsIHEpIGNvdXQgPDwgYW5zW1FbaV0ucF0gPDwgIlxuIjsKICAgIH0KfQoKbmFtZXNwYWNlIHN1YjMgewogICAgYm9vbCBjaGVja3N1YigpIHsKICAgICAgICBpZihtYXgobiwgbSkgPiAxMDAwMCkgcmV0dXJuIDA7CiAgICAgICAgRk9SKGksIDEsIG0pIGlmKExbaV0gIT0gMSB8fCBSW2ldICE9IG4pIHJldHVybiAwOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHZlY3RvciA8aW50PiBwb3NbTl07CiAgICBpbnQgbGFzdFtOXTsKICAgIGludCBueHRbTl1bTEddOwoKICAgIHZvaWQgcHJlcCgpIHsKICAgICAgICBGT1IoaSwgMSwgbSkgcG9zW1hbaV1dLnB1c2hfYmFjayhpKTsKICAgICAgICBGT1IoaSwgMSwgKGludCkxZTUpIHBvc1tpXS5wdXNoX2JhY2sobSArIDEpOwoKICAgICAgICBtZW1zZXQobGFzdCwgMHgzZiwgc2l6ZW9mIGxhc3QpOwoKICAgICAgICBGT1JEKGksIG0sIDEpIHsKICAgICAgICAgICAgbnh0W2ldWzBdID0gbGFzdFtYW2ldICsgWVtpXV07CiAgICAgICAgICAgIGxhc3RbWFtpXV0gPSBpOwogICAgICAgIH0KCiAgICAgICAgZm9yKGludCBqID0gMTsgKDEgPDwgaikgPD0gbTsgaisrKSBGT1IoaSwgMSwgbSkgewogICAgICAgICAgICBpZihueHRbaV1baiAtIDFdID4gbSkgbnh0W2ldW2pdID0gb287CiAgICAgICAgICAgIGVsc2UgaWYobnh0W254dFtpXVtqIC0gMV1dW2ogLSAxXSA+IG0pIG54dFtpXVtqXSA9IG9vOwogICAgICAgICAgICBlbHNlIG54dFtpXVtqXSA9IG54dFtueHRbaV1baiAtIDFdXVtqIC0gMV07CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQgc29sdmUoKSB7CiAgICAgICAgcHJlcCgpOwoKICAgICAgICBGT1IoaSwgMSwgcSkgewogICAgICAgICAgICBpbnQgcCA9IFFbaV0ucCwgdSA9IFFbaV0udSwgdiA9IFFbaV0udjsKICAgICAgICAgICAgaW50IHJlcyA9IGFbcF07CgogICAgICAgICAgICBpbnQgbCA9IHBvc1tyZXNdW2xvd2VyX2JvdW5kKEFMTChwb3NbcmVzXSksIHUpIC0gcG9zW3Jlc10uYmVnaW4oKV07CgogICAgICAgICAgICBpZihsIDw9IHYpIHsKICAgICAgICAgICAgICAgIHJlcyA9IFhbbF0gKyBZW2xdOwoKICAgICAgICAgICAgICAgIGludCB6ID0gX19sZyhtKTsKICAgICAgICAgICAgICAgIEZPUkQocywgeiwgMCkgaWYobnh0W2xdW3NdIDw9IHYpIHsKICAgICAgICAgICAgICAgICAgICBsID0gbnh0W2xdW3NdOwogICAgICAgICAgICAgICAgICAgIHJlcyA9IFhbbF0gKyBZW2xdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBjb3V0IDw8IHJlcyA8PCAiXG4iOwogICAgICAgIH0KICAgIH0KfQoKbmFtZXNwYWNlIHN1YjUgewogICAgc3RydWN0IE9wZSB7CiAgICAgICAgaW50IHgsIHksIGwsIHIsIGlkOwogICAgICAgIGJvb2wgb3BlcmF0b3IgPChjb25zdCBPcGUgJmUpIGNvbnN0IHsKICAgICAgICAgICAgcmV0dXJuIGwgPCBlLmw7CiAgICAgICAgfQogICAgfSBvcGVbTl07CiAgICBjb25zdCBpbnQgQkxPQ0sgPSAzMjA7CgogICAgc3RydWN0IEV2ZW50cyB7CiAgICAgICAgaW50IGssIHBvcywgeTsKICAgICAgICBib29sIG9wZXJhdG9yIDwoY29uc3QgRXZlbnRzICZlKSBjb25zdCB7CiAgICAgICAgICAgIHJldHVybiBrIDwgZS5rOwogICAgICAgIH0KICAgIH0gZXZlbnRzW05dOwoKICAgIGludCBjbnQgPSAwOwogICAgcGFpciA8aW50LCBpbnQ+IHZhbFtOXTsKCiAgICBpbnQgZltCTE9DSyArIDVdWyhpbnQpMWU1ICsgNV07CgogICAgdm9pZCBwcmVwKCkgewogICAgICAgIEZPUihpLCAxLCBtKSB7CiAgICAgICAgICAgIGV2ZW50c1srKyBjbnRdID0ge29wZVtpXS5sLCBpLCBvcGVbaV0ueX07CiAgICAgICAgICAgIGV2ZW50c1srKyBjbnRdID0ge29wZVtpXS5yICsgMSwgaSwgMH07CiAgICAgICAgICAgIHZhbFtpXS5maXJzdCA9IG9wZVtpXS54OwogICAgICAgIH0KCiAgICAgICAgc29ydChRICsgMSwgUSArIDEgKyBxKTsKICAgICAgICBzb3J0KGV2ZW50cyArIDEsIGV2ZW50cyArIDEgKyBjbnQpOwoKICAgICAgICBGT1IoaSwgMCwgQkxPQ0spIEZPUih2LCAxLCAoaW50KTFlNSkgZltpXVt2XSA9IHY7CiAgICB9CgogICAgaW5saW5lIHZvaWQgdXBkYXRlKGludCBwb3MsIGludCB5KSB7CiAgICAgICAgdmFsW3Bvc10uc2UgPSB5OwoKICAgICAgICBpbnQgYiA9IHBvcyAvIEJMT0NLOwogICAgICAgIGludCBMID0gYiAqIEJMT0NLLCBSID0gbWluKG0sIChiICsgMSkgKiBCTE9DSykgLSAxOwoKICAgICAgICBGT1IoaSwgTCwgUikgZltiXVt2YWxbaV0uZmldID0gdmFsW2ldLmZpOwoKICAgICAgICBGT1JEKGksIFIsIEwpIHsKICAgICAgICAgICAgaW50IHggPSB2YWxbaV0uZmksIHRtcCA9IHZhbFtpXS5zZTsKICAgICAgICAgICAgZltiXVt4XSA9IGZbYl1beCArIHRtcF07CiAgICAgICAgfQogICAgfQoKICAgIGlubGluZSBpbnQgcXVlcnkoaW50IHBvcywgaW50IGwsIGludCByKSB7CiAgICAgICAgaW50IHJlcyA9IGFbcG9zXTsKICAgICAgICBpbnQgYmwgPSBsIC8gQkxPQ0ssIGJyID0gciAvIEJMT0NLOwogICAgICAgIGlmKGJsID09IGJyKSB7CiAgICAgICAgICAgIEZPUihpLCBsLCByKSBpZih2YWxbaV0uZmkgPT0gcmVzKSByZXMrPSB2YWxbaV0uc2U7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgRk9SKGksIGwsIChibCArIDEpICogQkxPQ0sgLSAxKSBpZih2YWxbaV0uZmkgPT0gcmVzKSByZXMrPSB2YWxbaV0uc2U7CiAgICAgICAgICAgIEZPUihpLCBibCArIDEsIGJyIC0gMSkgcmVzID0gZltpXVtyZXNdOwogICAgICAgICAgICBGT1IoaSwgYnIgKiBCTE9DSywgcikgaWYodmFsW2ldLmZpID09IHJlcykgcmVzKz0gdmFsW2ldLnNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzOwogICAgfQoKICAgIGludCBhbnNbTl07CgogICAgdm9pZCBzb2x2ZSgpIHsKICAgICAgICBGT1IoaSwgMSwgbSkgb3BlW2ldID0ge1hbaV0sIFlbaV0sIExbaV0sIFJbaV0sIGl9OwogICAgICAgIHByZXAoKTsKCiAgICAgICAgaW50IGogPSAxOwogICAgICAgIEZPUihpLCAxLCBxKSB7CiAgICAgICAgICAgIGludCBwID0gUVtpXS5wLCB1ID0gUVtpXS51LCB2ID0gUVtpXS52OwoKICAgICAgICAgICAgd2hpbGUoaiA8PSBjbnQgJiYgZXZlbnRzW2pdLmsgPD0gcCkgewogICAgICAgICAgICAgICAgdXBkYXRlKGV2ZW50c1tqXS5wb3MsIGV2ZW50c1tqXS55KTsKICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYW5zW1FbaV0uaWRdID0gcXVlcnkocCwgdSwgdik7CiAgICAgICAgfQoKICAgICAgICBGT1IoaSwgMSwgcSkgY291dCA8PCBhbnNbaV0gPDwgIlxuIjsKICAgIH0KfQoKdm9pZCBwcm9jZXNzKCkgewogICAgY2luID4+IG4gPj4gbTsKICAgIEZPUihpLCAxLCBuKSBjaW4gPj4gYVtpXTsKICAgIEZPUihpLCAxLCBtKSBjaW4gPj4gTFtpXSA+PiBSW2ldID4+IFhbaV0gPj4gWVtpXTsKICAgIGNpbiA+PiBxOwogICAgRk9SKGksIDEsIHEpIGNpbiA+PiBRW2ldLnAgPj4gUVtpXS51ID4+IFFbaV0udiwgUVtpXS5pZCA9IGk7CgogICAgLy8gaWYoc3ViMTo6Y2hlY2tzdWIoKSkgcmV0dXJuIHN1YjE6OnNvbHZlKCk7CiAgICAvLyBpZihzdWIyOjpjaGVja3N1YigpKSByZXR1cm4gc3ViMjo6c29sdmUoKTsKICAgIC8vIGlmKHN1YjM6OmNoZWNrc3ViKCkpIHJldHVybiBzdWIzOjpzb2x2ZSgpOwogICAgcmV0dXJuIHN1YjU6OnNvbHZlKCk7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUobnVsbHB0cik7IC8vIGNvdXQudGllKG51bGxwdHIpOwogICAgZmlsZSgiY3F1ZXJ5Iik7CiAgICBwcm9jZXNzKCk7CiAgICByZXR1cm4gKDAgXiAwKTsKfQo=