#include<bits/stdc++.h>
using namespace std;
int N,M,a[50009],b[50009],c[50009],d[50009],niz[50009],K,sol;
long long maxsum;
int main(){
	cin>>N>>M;
	for(int i=1; i<=N; i++)cin>>a[i]>>b[i];
	for(int i=1; i<=M; i++)cin>>c[i]>>d[i];
	if(N==1){
		maxsum=b[1];
		for(int i=1; i<=M; i++)maxsum-=c[i];
		for(int i=1; i<=M; i++)niz[i]=c[i];
		for(int i=1; i<=M; i++){
			if(maxsum>=d[i]-niz[i]){
                maxsum-=(d[i]-niz[i]);
				niz[i]=d[i];
			}
			else{
				niz[i]+=maxsum;
				maxsum=0;
			}
		}
		K=sol=0;
		for(int i=1; i<=M; i++)if(niz[i]>0)K++;
		for(int i=1; i<=M; i++)sol+=niz[i];
		cout<<sol<<endl;
		cout<<K<<endl;
		for(int i=1; i<=M; i++)
			if(niz[i]>0)cout<<1<<" "<<i<<" "<<niz[i]<<"\n";
		return 0;
	}
	if(N==M){
		bool ok=true;
		for(int i=1; i<=N; i++)if(a[i]>c[i])ok=false;
		for(int i=1; i<=N; i++)if(a[i]>b[i])ok=false;
		for(int i=1; i<=N; i++)if(a[i]>d[i])ok=false;
		for(int i=1; i<=N; i++)if(c[i]>b[i])ok=false;
		for(int i=1; i<=N; i++)if(c[i]>d[i])ok=false;
		for(int i=1; i<=N; i++)if(b[i]>d[i])ok=false;
		if(ok){
			sol=0;
			for(int i=1; i<=N; i++)sol+=b[i];
			cout<<sol<<endl;
			cout<<N<<endl;
			for(int i=1; i<=N; i++)cout<<i<<" "<<i<<" "<<b[i]<<"\n";
		}
	}

	return 0;
}