#include <bits/stdc++.h>
using namespace std;
int n, m, k;
int a[300005], ans[300005];
long long bit[300005];
vector <int> idx[300005];

struct ZATA {
    int l, r, val;
} ques[3000005];

vector <ZATA> vt[300005];

void upd(int pos, int val) {
    while (pos <= m) {
        bit[pos] += val;
        pos += (pos & (-pos));
    }
}

void update(int l, int r, int val) {
    upd(l, val);
    upd(r + 1, -val);
}

long long get(int pos) {
    long long res = 0;
    while (pos) {
        res += bit[pos];
        pos -= (pos & (-pos));
    }
    return res;
}

main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    freopen("TEST.inp", "r", stdin);
    freopen("TEST.out", "w", stdout);
    cin >> n >> m;
    for (int i = 1; i <= m; i++) {
        int a;
        cin >> a;
        idx[a].push_back(i);
    }
    for (int i = 1; i <= n; i++) cin >> a[i];
    cin >> k;
    for (int i = 1; i <= k; i++) cin >> ques[i].l >> ques[i].r >> ques[i].val;

    int dem = 0;
    int mid = (k + 1) / 2;
    for (int i = 1; i <= n; i++)
        vt[mid].push_back({0, k + 1, i});
    while (dem < n) {
        memset(bit, 0, sizeof(bit));
        for (int i = 1; i <= k; i++) {
            auto [l, r, val] = ques[i];
            if (l <= r) update(l, r, val);
            else {
                update(1, r, val);
                update(l, m, val);
            }
            for (int j = 0; j < vt[i].size(); j++) {
                ZATA res = vt[i][j];
                long long sum = 0;
                for (auto pos : idx[res.val]) {
                    sum += get(pos);
                    if (sum >= a[res.val]) break;
                }
                if (sum >= a[res.val]) res.r = i;
                else res.l = i;
                mid = (res.l + res.r) / 2;
                if (res.l == res.r - 1) {
                    ans[res.val] = res.r;
                    dem++;
                } else vt[mid].push_back(res);
            }
            vt[i].clear();
        }
    }

    for (int i = 1; i <= n; i++)
        if (ans[i] == k + 1 || ans[i] == 0) cout << "NIE" << '\n';
        else cout << ans[i] << '\n';

    return 0;
}
