using System;
class program
{
    static void Main(string[] args)
    {
        string[] s = Console.ReadLine().Split();
        long[] niz = new long[int.Parse(s[0])];
        long[] niz1 = new long[int.Parse(s[0])];
        long[] niz2 = new long[int.Parse(s[1])];
        long[] niz3 = new long[int.Parse(s[1])];
        for (int i = 0; i < int.Parse(s[0]); i++)
        {
            string[] s1 = Console.ReadLine().Split();
            niz[i] = long.Parse(s1[0]);
            niz1[i] = long.Parse(s1[1]);
        }
        for (int i = 0; i < int.Parse(s[1]); i++)
        {
            string[] s1 = Console.ReadLine().Split();
            niz2[i] = long.Parse(s1[0]);
            niz3[i] = long.Parse(s1[1]);
        }
        long brojac = 0;
        int brPolja = 0;
        int[] x = new int[int.Parse(s[0]) * int.Parse(s[1])];
        int[] y = new int[int.Parse(s[0]) * int.Parse(s[1])];
        long[] n = new long[int.Parse(s[0]) * int.Parse(s[1])];
        int k = 0;
        for (int i = 0; i < niz.Length; i++)
        {
            for (int j = 0; j < niz3.Length; j++)
            {
                if (niz1[i] < niz2[j] || niz[i] > niz3[j]) ;
                else if (brojac <= niz1[i])
                {
                    brojac += Math.Min(niz1[i], niz3[j]) - Math.Max(niz[i], niz2[j]) + 1;
                    brPolja++;
                    x[k] = i;
                    y[k] = j;
                    n[k] = Math.Min(niz1[i], niz3[j]) - Math.Max(niz[i], niz2[j]) + 1;
                }
                if (brojac > niz1[i])
                {
                    if (Math.Max(niz[i], niz2[j]) < Math.Min(niz1[i], niz3[j]) - brojac)
                    {
                        brojac -= Math.Min(niz1[i], niz3[j]) - Math.Max(niz[i], niz2[j]) + 1 - (Math.Min(niz1[i], niz3[j]) - brojac);
                        n[k] = Math.Min(niz1[i], niz3[j]) - brojac;
                    }
                    else
                    {
                        brojac -= Math.Min(niz1[i], niz3[j]) - Math.Max(niz[i], niz2[j]) + 1;
                        brPolja--;
                        n[k] = 0;
                    }
                }
                k++;
            }
        }
        Console.WriteLine(brojac);
        Console.WriteLine(brPolja);
        for (int i = 0; i < brPolja; i++)
        {
            if (n[i] == 0) ;
            else
                Console.WriteLine(x[i] + " " + y[i] + " " + n[i]);
        }

    }
}