#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
// cap[i]:第 i 个小组当前的剩余运力
vector<ll> cap(n + 1);
for (int i = 1; i <= n; i++) cin >> cap[i];
// 每个小组一个小根堆,存 (归还时刻, 占用运力)
vector<priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>>> busy(n + 1);
for (int i = 0; i < m; i++) {
ll st, t, d;
int id;
cin >> st >> id >> t >> d;
// 开工前,先把已经做完的任务占用的运力还回来
auto &q = busy[id];
while (!q.empty() && q.top().first <= st) {
cap[id] += q.top().second;
q.pop();
}
if (cap[id] < d) {
// 运力不足,取消这次任务
cout << -1 << "\n";
} else {
cap[id] -= d;
q.push({st + t, d});
cout << cap[id] << "\n";
}
}
return 0;
}