#include <iostream>
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

struct tri{
	int x, y, br;
};

int main(int argc, char** argv) {
	ios_base::sync_with_stdio(false);
	int n,m;
	cin>>n>>m;
	int imin[n],imax[n],jmin[m],jmax[m], i;
	vector<tri> res;
	for(int i=0;i<n;i++){
		cin>>imin[i]>>imax[i];
	}
	for(int i=0;i<m;i++){
		cin>>jmin[i]>>jmax[i];
	}
	int zred[n], zkol[m];
	for(int i=0;i<n;i++){
		zred[i]=0;
	}
	for(int i=0;i<m;i++){
		zkol[i]=0;
	}
	int kon=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			int k=min((imax[i]-zred[i]),(jmax[j]-zkol[j]));
			tri pom;
			if(k>0){
				kon+=k;
				pom.x=i;
				pom.y=j;
				pom.br=k;
				res.push_back(pom);
				zred[i]+=k;
				zkol[j]+=k;
			}
			
		}
	}
	cout<<kon<<endl;
	cout<<res.size()<<endl;
	for(int i=0;i<res.size();i++){
		cout<<res[i].x<<" "<<res[i].y<<" "<<res[i].br<<endl;
	}
	return 0;
}
/*
2 3
2 2
2 2
1 2
1 2
1 2

2 3
1 4
1 6
1 2
1 5
1 1
*/