#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<climits>
#include<cstdlib>
#include<queue>
#include<cmath>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template <typename T>
inline void read(T&x){
int w = 0;x = 0;
char ch = getchar();
while(ch<'0' || ch>'9'){
if(ch=='-') w = 1;
ch = getchar();
}
while(ch>='0' && ch<='9'){
x = (x<<1)+(x<<3)+(ch^48);
ch = getchar();
}
if(w) x = ~x+1;
}
template <typename T,typename...Args>
inline void read(T&t,Args&...args){
read(t);read(args...);
}
template <typename T>
inline T Min(T x,T y){ return (x < y ? x : y); }
template <typename T>
inline T Max(T x,T y){ return (x > y ? x : y); }
const int N = 3e5+10;
const ll INF = 1e17;
int n,m,ans[N];
struct{
ll num; int id;
}q[N],p1[N],p2[N];
struct{
int l,r; ll w;
}g[N];
vector <int> o[N];
ll tr[N<<1];
inline void add(int x,ll k){
for(int i=x;i<=(m<<1);i+=(i&(~i+1))) tr[i] += k;
}
inline ll query(int x){
ll res = 0;
for(int i=x;i;i-=(i&(~i+1))) res += tr[i];
return res;
}
inline ll check(int x){
ll res = 0;
for(int i=o[q[x].id].size()-1;i>=0;--i){
res += query(o[q[x].id][i])+query(o[q[x].id][i]+m);
}
return res;
}
inline void solve(int l,int r,int L,int R){
if(L>R) return ;
if(l>=r){
for(int i=L;i<=R;++i) ans[q[i].id] = l;
return ;
}
int mid = (l+r)>>1;
for(int i=l;i<=mid;++i) add(g[i].l,g[i].w),add(g[i].r+1,-1ll*g[i].w);
int top1 = 0,top2 = 0;
for(int i=L;i<=R;++i){
ll tmp = check(i);
if(tmp>=q[i].num) p1[++top1] = q[i];
else{
q[i].num -= tmp;
p2[++top2] = q[i];
}
}
for(int i=L;i<=L+top1-1;++i) q[i] = p1[i-L+1];
for(int i=L+top1;i<=R;++i) q[i] = p2[i-L-top1+1];
for(int i=l;i<=mid;++i) add(g[i].l,-1ll*g[i].w),add(g[i].r+1,g[i].w);
solve(l,mid,L,L+top1-1);
solve(mid+1,r,L+top1,R);
}
int main(){
read(n,m);
for(int i=1,x;i<=m;++i){
read(x);
o[x].push_back(i);
}
for(int i=1;i<=n;++i){
read(q[i].num);
q[i].id = i;
}
int T;read(T);
for(int i=1;i<=T;++i){
read(g[i].l,g[i].r,g[i].w);
if(g[i].l>g[i].r) g[i].r += m;
}
g[++T] = {1,m<<1,INF};
solve(1,T,1,n);
for(int i=1;i<=n;++i) (ans[i]==T) ? puts("NIE") : printf("%d\n",ans[i]);
return 0;
}