using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Krompiri
{
    internal class Program
    {
        struct polje
        {
            public ulong prvi;
            public ulong drugi;
        }
        static void Main(string[] args)
        {
            ulong pocI = 1;
            ulong br = 0;
            ulong Q = 0;
            ulong pocJ = 1;
            string[] u = Console.ReadLine().Split(' ');
            ulong M = ulong.Parse(u[1]);
            ulong N = ulong.Parse(u[0]);
            polje[,] mars = new polje[N+1, M+1];
            for(ulong i = 1; i <= N; i++)
            {
                string[] u2 = Console.ReadLine().Split(' ');
                mars[i, 0].prvi = ulong.Parse(u2[0]);
                mars[i, 0].drugi = ulong.Parse(u2[1]);
            }
            if (N == 1)
            {
                for (ulong j = 1; j <= M; j++)
                {
                    string[] u2 = Console.ReadLine().Split(' ');
                    mars[0, j].prvi = ulong.Parse(u2[0]);
                    Q += mars[0, j].prvi;
                    mars[0, j].drugi = ulong.Parse(u2[1]);
                }
                ulong P = mars[0, 1].drugi - Q;
                for (ulong i = 1; i <= N; i++)
                {
                    for(ulong j = 1; j <= M; j++)
                    {

                        ulong konst = mars[0, j].prvi;
                        if (mars[0, j].drugi - konst >= P) {
                            konst += P;
                            P = 0;
                        } else {
                            konst = mars[0,j].drugi;
                            P -= (mars[0, j].drugi - mars[0, j].prvi);
                        } 
                        mars[i, j].prvi = konst;
                        mars[0, 0].prvi += konst;
                       
                    }
                }

            }
            else
            {
                for (ulong j = 1; j <= M; j++)
                {
                    string[] u2 = Console.ReadLine().Split(' ');
                    mars[0, j].prvi = ulong.Parse(u2[0]);
                    mars[0, j].drugi = ulong.Parse(u2[1]);
                }

                for (ulong i = 1; i <= N; i++)
                {
                    for (ulong j = 1; j <= M; j++)
                    {

                        if (mars[0, j].drugi <= 0)
                        {
                            continue;
                        }
                        else
                        {
                            ulong konst = Math.Min(mars[i, 0].drugi, mars[0, j].drugi);
                            if (konst > 0)
                            {
                                br++;
                            }
                            mars[i, j].prvi = konst;
                            mars[0, 0].prvi += konst;
                            mars[i, 0].drugi -= konst;
                            mars[0, j].drugi -= konst;

                            if (mars[i, 0].drugi <= 0)
                            {
                                break;
                            }
                        }
                    }
                }
            }
            Console.WriteLine(mars[0, 0].prvi);
            Console.WriteLine(br);
            for (ulong i = 1; i <= N; i++)
            {
                for (ulong j = 1; j <= M; j++)
                {
                    if (mars[i,j].prvi > 0)
                    {
                        Console.WriteLine("{0} {1} {2}",i,j,mars[i,j].prvi);
                    }
                }
            }
        }
    }
}