#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
#define pb push_back
#define ff first
#define ss second
struct ruter{
int p, c, a, b, ind;
};
struct stan{
int i, j, dl;
};
bool cmp1(const ruter& a, const ruter& b){
return a.p < b.p;
}
bool cmp2(const stan& a, const stan& b){
return a.dl > b.dl;
}
const int NMAX = 2e3 + 1;
const int INF = 2e9 + 7;
int minuj[NMAX][NMAX], maxuj[NMAX][NMAX], dp[NMAX][NMAX];
void build(vi& h){
int n = h.size() - 1;
for(int i = 1; i <= n; i++){
for(int j = i + 1; j <= n; j++){
minuj[i][j] = min(minuj[i][j - 1], h[j]);
maxuj[i][j] = max(maxuj[i][j - 1], h[j]);
}
}
}
const int N = 1024 * 2;
int tree[NMAX][2 * N][2];
void upd(int v, int val, int t, int p){
v += N;
tree[p][v][t] = min(tree[p][v][t], val);
v >>= 1;
while(v){
tree[p][v][t] = min(tree[p][2 * v][t], tree[p][2 * v + 1][t]);
v >>= 1;
}
}
int query(int l, int r, int p, int t){
l += N;
r += N;
int wyn = INF;
while(l <= r){
if(l & 1){
wyn = min(wyn, tree[p][l][t]);
l++;
}
if(!(r & 1)){
wyn = min(wyn, tree[p][r][t]);
r--;
}
l >>= 1;
r >>= 1;
}
return wyn;
}
pii znajdz(int start, int mn, int mx, int n){
int l = 1, r = start;
while(l < r){
int mid = (l + r) >> 1;
if(minuj[mid][start] >= mn && maxuj[mid][start] <= mx) r = mid;
else l = mid + 1;
}
int L = l;
l = start;
r = n;
while(l < r){
int mid = (l + r + 1) >> 1;
if(minuj[start][mid] >= mn && maxuj[start][mid] <= mx) l = mid;
else r = mid - 1;
}
return {L, l};
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
vi h(n + 1);
for(int i = 1; i <= n; i++){
cin >> h[i];
minuj[i][i] = h[i];
maxuj[i][i] = h[i];
}
build(h);
for(int z = 0; z < NMAX; z++){
for(int i = 1; i < 2 * N; i++){
tree[z][i][0] = INF;
tree[z][i][1] = INF;
}
}
vector<ruter> rut(k);
for(int i = 0; i < k; i++){
cin >> rut[i].p >> rut[i].c >> rut[i].a >> rut[i].b;
rut[i].ind = i;
}
sort(rut.begin(), rut.end(), cmp1);
vector<stan> stany;
for(int i = 0; i < k; i++){
for(int j = 0; j < k; j++){
if(rut[i].a <= rut[j].a && rut[i].b <= rut[j].b){
stany.pb({i, j, rut[j].b - rut[i].a});
}
}
}
sort(stany.begin(), stany.end(), cmp2);
for(int i = 0; i < NMAX; i++){
for(int j = 0; j < NMAX; j++){
dp[i][j] = INF;
}
}
for(stan st : stany){
int i = st.i;
int j = st.j;
int lewy = rut[i].a;
int prawy = rut[j].b;
pii prz = znajdz(rut[i].p, lewy, prawy, n);
if(prz.ff > rut[j].p || prz.ss < rut[j].p)
continue;
if(prz.ff == 1 && prz.ss == n){
dp[i][j] = 0;
}
else{
int l = 0, r = k;
while(l < r){
int mid = (l + r) >> 1;
if(rut[mid].p >= prz.ff)
r = mid;
else
l = mid + 1;
}
int L = l;
l = 0;
r = k;
while(l < r){
int mid = (l + r) >> 1;
if(rut[mid].p <= prz.ss)
l = mid + 1;
else
r = mid;
}
int R = l - 1;
if(L <= R){
int x = query(L, R, j, 0);
int y = query(L, R, i, 1);
dp[i][j] = min(dp[i][j], min(x, y));
}
}
if(dp[i][j] != INF){
upd(i, dp[i][j] + rut[i].c, 0, j);
upd(j, dp[i][j] + rut[j].c, 1, i);
if(i == j){
for(int z = 0; z < k; z++){
if(rut[i].b > rut[z].b){
upd(i, dp[i][i] + rut[i].c, 0, z);
}
}
}
}
}
vi ans(k);
for(int i = 0; i < k; i++){
int ind = rut[i].ind;
if(h[rut[i].p] < rut[i].a || h[rut[i].p] > rut[i].b){
ans[ind] = -1;
}else if(dp[i][i] == INF){
ans[ind] = -1;
}else{
ans[ind] = dp[i][i] + rut[i].c;
}
}
for(int x : ans)
cout << x << "\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHBhaXI8bGwsIGxsPiBwbGw7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgdmVjdG9yPGxsPiB2bGw7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKCnN0cnVjdCBydXRlcnsKICAgIGludCBwLCBjLCBhLCBiLCBpbmQ7Cn07CgpzdHJ1Y3Qgc3RhbnsKICAgIGludCBpLCBqLCBkbDsKfTsKCmJvb2wgY21wMShjb25zdCBydXRlciYgYSwgY29uc3QgcnV0ZXImIGIpewogICAgcmV0dXJuIGEucCA8IGIucDsKfQoKYm9vbCBjbXAyKGNvbnN0IHN0YW4mIGEsIGNvbnN0IHN0YW4mIGIpewogICAgcmV0dXJuIGEuZGwgPiBiLmRsOwp9Cgpjb25zdCBpbnQgTk1BWCA9IDJlMyArIDE7CmNvbnN0IGludCBJTkYgPSAyZTkgKyA3OwoKaW50IG1pbnVqW05NQVhdW05NQVhdLCBtYXh1altOTUFYXVtOTUFYXSwgZHBbTk1BWF1bTk1BWF07Cgp2b2lkIGJ1aWxkKHZpJiBoKXsKICAgIGludCBuID0gaC5zaXplKCkgLSAxOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSBpICsgMTsgaiA8PSBuOyBqKyspewogICAgICAgICAgICBtaW51altpXVtqXSA9IG1pbihtaW51altpXVtqIC0gMV0sIGhbal0pOwogICAgICAgICAgICBtYXh1altpXVtqXSA9IG1heChtYXh1altpXVtqIC0gMV0sIGhbal0pOwogICAgICAgIH0KICAgIH0KfQoKY29uc3QgaW50IE4gPSAxMDI0ICogMjsKaW50IHRyZWVbTk1BWF1bMiAqIE5dWzJdOwoKdm9pZCB1cGQoaW50IHYsIGludCB2YWwsIGludCB0LCBpbnQgcCl7CiAgICB2ICs9IE47CiAgICB0cmVlW3BdW3ZdW3RdID0gbWluKHRyZWVbcF1bdl1bdF0sIHZhbCk7CiAgICB2ID4+PSAxOwoKICAgIHdoaWxlKHYpewogICAgICAgIHRyZWVbcF1bdl1bdF0gPSBtaW4odHJlZVtwXVsyICogdl1bdF0sIHRyZWVbcF1bMiAqIHYgKyAxXVt0XSk7CiAgICAgICAgdiA+Pj0gMTsKICAgIH0KfQoKaW50IHF1ZXJ5KGludCBsLCBpbnQgciwgaW50IHAsIGludCB0KXsKICAgIGwgKz0gTjsKICAgIHIgKz0gTjsKICAgIGludCB3eW4gPSBJTkY7CgogICAgd2hpbGUobCA8PSByKXsKICAgICAgICBpZihsICYgMSl7CiAgICAgICAgICAgIHd5biA9IG1pbih3eW4sIHRyZWVbcF1bbF1bdF0pOwogICAgICAgICAgICBsKys7CiAgICAgICAgfQogICAgICAgIGlmKCEociAmIDEpKXsKICAgICAgICAgICAgd3luID0gbWluKHd5biwgdHJlZVtwXVtyXVt0XSk7CiAgICAgICAgICAgIHItLTsKICAgICAgICB9CiAgICAgICAgbCA+Pj0gMTsKICAgICAgICByID4+PSAxOwogICAgfQoKICAgIHJldHVybiB3eW47Cn0KCnBpaSB6bmFqZHooaW50IHN0YXJ0LCBpbnQgbW4sIGludCBteCwgaW50IG4pewogICAgaW50IGwgPSAxLCByID0gc3RhcnQ7CgogICAgd2hpbGUobCA8IHIpewogICAgICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICAgICAgaWYobWludWpbbWlkXVtzdGFydF0gPj0gbW4gJiYgbWF4dWpbbWlkXVtzdGFydF0gPD0gbXgpIHIgPSBtaWQ7CiAgICAgICAgZWxzZSBsID0gbWlkICsgMTsKICAgIH0KCiAgICBpbnQgTCA9IGw7CgogICAgbCA9IHN0YXJ0OwogICAgciA9IG47CgogICAgd2hpbGUobCA8IHIpewogICAgICAgIGludCBtaWQgPSAobCArIHIgKyAxKSA+PiAxOwogICAgICAgIGlmKG1pbnVqW3N0YXJ0XVttaWRdID49IG1uICYmIG1heHVqW3N0YXJ0XVttaWRdIDw9IG14KSBsID0gbWlkOwogICAgICAgIGVsc2UgciA9IG1pZCAtIDE7CiAgICB9CgogICAgcmV0dXJuIHtMLCBsfTsKfQoKaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIGludCBuLCBrOwogICAgY2luID4+IG4gPj4gazsKCiAgICB2aSBoKG4gKyAxKTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBjaW4gPj4gaFtpXTsKICAgICAgICBtaW51altpXVtpXSA9IGhbaV07CiAgICAgICAgbWF4dWpbaV1baV0gPSBoW2ldOwogICAgfQoKICAgIGJ1aWxkKGgpOwoKICAgIGZvcihpbnQgeiA9IDA7IHogPCBOTUFYOyB6KyspewogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPCAyICogTjsgaSsrKXsKICAgICAgICAgICAgdHJlZVt6XVtpXVswXSA9IElORjsKICAgICAgICAgICAgdHJlZVt6XVtpXVsxXSA9IElORjsKICAgICAgICB9CiAgICB9CgogICAgdmVjdG9yPHJ1dGVyPiBydXQoayk7CgogICAgZm9yKGludCBpID0gMDsgaSA8IGs7IGkrKyl7CiAgICAgICAgY2luID4+IHJ1dFtpXS5wID4+IHJ1dFtpXS5jID4+IHJ1dFtpXS5hID4+IHJ1dFtpXS5iOwogICAgICAgIHJ1dFtpXS5pbmQgPSBpOwogICAgfQoKICAgIHNvcnQocnV0LmJlZ2luKCksIHJ1dC5lbmQoKSwgY21wMSk7CgogICAgdmVjdG9yPHN0YW4+IHN0YW55OwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBrOyBpKyspewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBrOyBqKyspewogICAgICAgICAgICBpZihydXRbaV0uYSA8PSBydXRbal0uYSAmJiBydXRbaV0uYiA8PSBydXRbal0uYil7CiAgICAgICAgICAgICAgICBzdGFueS5wYih7aSwgaiwgcnV0W2pdLmIgLSBydXRbaV0uYX0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHNvcnQoc3RhbnkuYmVnaW4oKSwgc3RhbnkuZW5kKCksIGNtcDIpOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBOTUFYOyBpKyspewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBOTUFYOyBqKyspewogICAgICAgICAgICBkcFtpXVtqXSA9IElORjsKICAgICAgICB9CiAgICB9CgogICAgZm9yKHN0YW4gc3QgOiBzdGFueSl7CiAgICAgICAgaW50IGkgPSBzdC5pOwogICAgICAgIGludCBqID0gc3QuajsKCiAgICAgICAgaW50IGxld3kgPSBydXRbaV0uYTsKICAgICAgICBpbnQgcHJhd3kgPSBydXRbal0uYjsKCiAgICAgICAgcGlpIHByeiA9IHpuYWpkeihydXRbaV0ucCwgbGV3eSwgcHJhd3ksIG4pOwoKICAgICAgICBpZihwcnouZmYgPiBydXRbal0ucCB8fCBwcnouc3MgPCBydXRbal0ucCkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgIGlmKHByei5mZiA9PSAxICYmIHByei5zcyA9PSBuKXsKICAgICAgICAgICAgZHBbaV1bal0gPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBpbnQgbCA9IDAsIHIgPSBrOwoKICAgICAgICAgICAgd2hpbGUobCA8IHIpewogICAgICAgICAgICAgICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgICAgICAgICAgICAgIGlmKHJ1dFttaWRdLnAgPj0gcHJ6LmZmKQogICAgICAgICAgICAgICAgICAgIHIgPSBtaWQ7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgbCA9IG1pZCArIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGludCBMID0gbDsKCiAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICByID0gazsKCiAgICAgICAgICAgIHdoaWxlKGwgPCByKXsKICAgICAgICAgICAgICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICAgICAgICAgICAgICBpZihydXRbbWlkXS5wIDw9IHByei5zcykKICAgICAgICAgICAgICAgICAgICBsID0gbWlkICsgMTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICByID0gbWlkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpbnQgUiA9IGwgLSAxOwoKICAgICAgICAgICAgaWYoTCA8PSBSKXsKICAgICAgICAgICAgICAgIGludCB4ID0gcXVlcnkoTCwgUiwgaiwgMCk7CiAgICAgICAgICAgICAgICBpbnQgeSA9IHF1ZXJ5KEwsIFIsIGksIDEpOwoKICAgICAgICAgICAgICAgIGRwW2ldW2pdID0gbWluKGRwW2ldW2pdLCBtaW4oeCwgeSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZihkcFtpXVtqXSAhPSBJTkYpewogICAgICAgICAgICB1cGQoaSwgZHBbaV1bal0gKyBydXRbaV0uYywgMCwgaik7CiAgICAgICAgICAgIHVwZChqLCBkcFtpXVtqXSArIHJ1dFtqXS5jLCAxLCBpKTsKCiAgICAgICAgICAgIGlmKGkgPT0gail7CiAgICAgICAgICAgICAgICBmb3IoaW50IHogPSAwOyB6IDwgazsgeisrKXsKICAgICAgICAgICAgICAgICAgICBpZihydXRbaV0uYiA+IHJ1dFt6XS5iKXsKICAgICAgICAgICAgICAgICAgICAgICAgdXBkKGksIGRwW2ldW2ldICsgcnV0W2ldLmMsIDAsIHopOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB2aSBhbnMoayk7CgogICAgZm9yKGludCBpID0gMDsgaSA8IGs7IGkrKyl7CiAgICAgICAgaW50IGluZCA9IHJ1dFtpXS5pbmQ7CgogICAgICAgIGlmKGhbcnV0W2ldLnBdIDwgcnV0W2ldLmEgfHwgaFtydXRbaV0ucF0gPiBydXRbaV0uYil7CiAgICAgICAgICAgIGFuc1tpbmRdID0gLTE7CiAgICAgICAgfWVsc2UgaWYoZHBbaV1baV0gPT0gSU5GKXsKICAgICAgICAgICAgYW5zW2luZF0gPSAtMTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgYW5zW2luZF0gPSBkcFtpXVtpXSArIHJ1dFtpXS5jOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IHggOiBhbnMpCiAgICAgICAgY291dCA8PCB4IDw8ICJcbiI7CgogICAgcmV0dXJuIDA7Cn0=