///TRAN THAI BAO :3
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
#define maxN 300007
int n, m, q;
int own[maxN];
long long pt[maxN];
vector<int>land[maxN];
int ans[maxN];
struct BIT
{
long long b[maxN];
void reset()
{
memset(b, 0, sizeof(b));
}
void update(int pos, int val)
{
for(; pos <= m; pos += (pos & -pos))
b[pos] += val;
}
long long get(int pos)
{
long long ans = 0;
for(; pos > 0; pos -= (pos & -pos))
ans += b[pos];
return ans;
}
void updateRange(int l, int r, long long val)
{
if(l <= r)
{
update(l, val);
update(r+1, -val);
}
else
{
update(1, val);
update(r+1, -val);
update(l, val);
}
}
};
struct add
{
int l, r;
long long val;
};
struct CURQUERY
{
int lo, hi;
int id;
};
bool CMPQUERY(CURQUERY one, CURQUERY two)
{
int midOne = (one.lo + one.hi)/2;
int midTwo = (two.lo + two.hi)/2;
if(midOne != midTwo)
return midOne < midTwo;
return one.id < two.id;
}
vector<CURQUERY> curQ;
BIT bit;
add op[maxN];
void compute()
{
bit.reset();
vector<CURQUERY>nxt;
sort(curQ.begin(), curQ.end(), CMPQUERY);
int j = 1;
for(int i = 0; i < curQ.size(); i++)
{
CURQUERY cur = curQ[i];
int curT = (cur.lo + cur.hi)/2;
while(j <= curT)
{
bit.updateRange(op[j].l, op[j].r, op[j].val);
j++;
}
long long tmp = 0;
for(int i2 = 0; i2 < land[cur.id].size(); i2++)
{
tmp += bit.get(land[cur.id][i2]);
if(tmp >= pt[cur.id])
break;
}
if(tmp >= pt[cur.id])
{
ans[cur.id] = min(ans[cur.id], curT);
cur.hi = curT-1;
}
else cur.lo = curT+1;
if(cur.lo <= cur.hi)
nxt.push_back(cur);
}
curQ.clear();
swap(nxt, curQ);
}
void readData()
{
cin >> n >> m;
for(int i = 1; i <= m; i++)
{
cin >> own[i];
land[own[i]].push_back(i);
}
for(int i = 1; i <= n; i++)
cin >> pt[i];
cin >> q;
for(int i = 1; i <= n; i++)
{
ans[i] = q+1;
curQ.push_back({1, q, i});
}
for(int i = 1; i <= q; i++)
cin >> op[i].l >> op[i].r >> op[i].val;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
readData();
while(!curQ.empty()) compute();
for(int i = 1; i <= n; i++)
if(ans[i] == q+1)
cout << "NIE\n";
else cout << ans[i] << "\n";
return 0;
}