#include<bits/stdc++.h>
using namespace std;
const int MaxN=102;
struct _{
int to,next,w;
}e[MaxN];
int cnt=1,head[MaxN];
void addedge(int u,int v,int w){
e[cnt].to=v;
e[cnt].w=w;
e[cnt].next=head[u];
head[u]=cnt++;
}
int tot[MaxN],U[MaxN];
int sum[MaxN],ans[MaxN];
int n,m;
int input[MaxN],output[MaxN];
queue<int> q;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>sum[i]>>U[i];
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
addedge(u,v,w);
input[v]++;output[u]=true;
}
for(int i=1;i<=n;i++){
if(input[i]) sum[i]-=U[i];
else q.push(i);
}
while(!q.empty()){
int k=q.front();
tot[k]++;
ans[k]=sum[k];
q.pop();
for(int i=head[k];i;i=e[i].next){
int v=e[i].to;
sum[v]+=ans[k]*e[i].w;
tot[v]++;
if(tot[v]==input[v]&&sum[v]>0) q.push(v);
}
}
bool flag=true;
for(int i=1;i<=n;i++)
if(!output[i]&&ans[i]>0)
(cout<<i<<" "<<ans[i]<<endl)&&(flag=false);
if(flag) cout<<"NULL";
return 0;
}