#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const int N=110,M=54444;
queue<int> q;
int n,m,p,z[N];
int a,b,h[N],cnt,r[N],num;
ll s,c[N],u[N];
struct qwe{
int to,net;
ll dis;
}tr[M];
struct we{
int id;
ll k;
}l[N];
void add(int a,int b,ll s){
tr[++cnt].to=b;
tr[cnt].dis=s;
tr[cnt].net=h[a];
h[a]=cnt;
}
bool mm(we a,we b){
return a.id<b.id;
}
int main(){
scanf("%d%d",&n,&p);
for(int i=1;i<=n;i++) scanf("%lld%lld",&c[i],&u[i]);
for(int i=1;i<=p;i++){
scanf("%d%d%lld",&a,&b,&s);
add(a,b,s);r[b]++;
}
for(int i=1;i<=n;i++){
if(!r[i]) q.push(i);
else c[i]-=u[i];
}
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=h[x];i;i=tr[i].net){
int y=tr[i].to;
ll zs=tr[i].dis;
r[y]--;
if(zs<0) continue;
c[y]+=zs*c[x];
if(!r[y]){
q.push(y);
if(!h[y]&&c[y]){
l[++num].id=y;
l[num].k=c[y];
}
}
}
}
sort(l+1,l+1+num,mm);
if(!num) puts("NULL");
else{
for(int i=1;i<=num;i++) printf("%d %lld\n",l[i].id,l[i].k);
}
return 0;
}