using System;
using System.Text;

class Program
{
    static void Main()
    {
        var dimenzije = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
        var redoviIKolone = new List<Tuple<int, int>>();
        int[] nizovi;
        for(int i = 0; i < dimenzije[0]; i++)
        {
            nizovi = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
            redoviIKolone.Add(Tuple.Create(nizovi[0], nizovi[1]));
        }
        for (int i = 0; i < dimenzije[1]; i++)
        {
            nizovi = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
            redoviIKolone.Add(Tuple.Create(nizovi[0], nizovi[1]));
        }
        var suma = 0;
        var izlaz = new List<Tuple<int, int, int>>();
        for(int i = 0; i < dimenzije[0]; i++)
        {
            for(int j = dimenzije[0]; j < dimenzije[0] + dimenzije[1]; j++)
            {
                var max = Math.Min(Math.Max(redoviIKolone[i].Item1, redoviIKolone[i].Item2), Math.Max(redoviIKolone[j].Item1, redoviIKolone[j].Item2));
                if(max != 0)
                {
                    izlaz.Add(Tuple.Create(i + 1, j - dimenzije[0] + 1, max));
                    suma += max;
                }
            }
        }
        Console.WriteLine(suma);
        Console.WriteLine(izlaz.Count);
        foreach(var red in izlaz)
        {
            Console.WriteLine(red.Item1 + " " + red.Item2 + " " + red.Item3);
        }
        Console.ReadLine();
    }
}