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

namespace Petlja_2
{
    class Rezultat
    {
        //public int prviTim { get; set; }
        //public int drugiTim { get; set; }
        public int[] tim { get; set; }
        public int pobednik { get; set; }
        public int gubitnik { get; set; }

        public Rezultat(int prvi, int drugi)
        {
            tim = new int[2];
            tim[0] = prvi;
            tim[1] = drugi;
            if (tim[0] > tim[1])
            {
                pobednik = 0;
                gubitnik = 1;
            }
            else
            {
                pobednik = 1;
                gubitnik = 0;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            string[] linija = Console.ReadLine().Split(); //3-5 setova
            int brojPoena = int.Parse(linija[0]);
            int minPoenaSet = int.Parse(linija[1]);
            if (minPoenaSet * 3 > brojPoena)
            {
                Console.WriteLine("-1"); // PROVERI -1 USLOV!
                return;
            }
            int a = minPoenaSet;
            int b = minPoenaSet - 2;
            List<Rezultat> rezultati = new List<Rezultat>();
            int potroseniPoeni = 0;
            int i = 0;
            while (potroseniPoeni < brojPoena - minPoenaSet)
            {
                if (rezultati.Count < 5)
                {
                    if (i % 2 == 0)
                        rezultati.Add(new Rezultat(a, b));//prviTim = a, drugiTim = b
                    else
                        rezultati.Add(new Rezultat(b, a));
                    i++;
                    potroseniPoeni += (a + b);
                }
                else
                {
                    break;
                }
            }//170 25
            /*Console.WriteLine("Potroseno " + potroseniPoeni);
            foreach (Rezultat r in rezultati)
            {
                Console.WriteLine(r.tim[0] + " " + r.tim[1] + " " + r.pobednik);
            }*/
            c:
            int razlika = brojPoena - potroseniPoeni;
            if (razlika < 0)
            {
                int abs = Math.Abs(razlika);
                foreach (Rezultat r in rezultati)
                {
                    razlika = brojPoena - potroseniPoeni;
                    abs = Math.Abs(razlika);
                    if (razlika == 0) break;
                    r.tim[r.gubitnik] -= abs;
                    potroseniPoeni -= abs;
                    if (r.tim[r.gubitnik] < 0)
                    {
                        int raz = Math.Abs(r.tim[r.gubitnik]);
                        r.tim[r.gubitnik] += raz;
                        potroseniPoeni += raz;
                    }
                }
            }
            else
            {
                if (razlika % 2 == 0) //24
                {
                    int zaDodati = razlika / 2;
                    rezultati[0].tim[0] += zaDodati;
                    rezultati[0].tim[1] += zaDodati;
                    potroseniPoeni += razlika;
                    /*while (potroseniPoeni < brojPoena)
                    {
                        rezultati[0].tim[0]++;
                        rezultati[0].tim[1]++;
                        potroseniPoeni += 2;
                    }*/
                }
                else
                {
                    if (rezultati.Count < 5)
                    {
                        while (razlika <= minPoenaSet)
                        {
                            razlika = brojPoena - potroseniPoeni;
                            int fali = minPoenaSet - razlika;
                            if (fali == 0)
                                break;
                            foreach (Rezultat r in rezultati)
                            {
                                r.tim[r.gubitnik] -= fali;
                                potroseniPoeni -= fali;
                                if (r.tim[r.gubitnik] < 0)
                                {
                                    potroseniPoeni += Math.Abs(r.tim[r.gubitnik]);
                                    r.tim[r.gubitnik] += Math.Abs(r.tim[r.gubitnik]);
                                }
                                razlika = brojPoena - potroseniPoeni;
                                fali = minPoenaSet - razlika;
                                if (fali == 0)
                                    break;
                            }
                        }
                        if (rezultati.Count == 2 || rezultati.Count == 4)
                            rezultati.Add(new Rezultat(minPoenaSet, 0));
                        else if (rezultati.Count == 3)
                            rezultati.Add(new Rezultat(0, minPoenaSet));
                        potroseniPoeni += minPoenaSet;
                    }
                    else
                    {
                        if (razlika % 2 != 0)
                        {
                            rezultati[1].tim[rezultati[1].gubitnik]--;
                            potroseniPoeni--;
                            razlika--;
                        }
                        int zaDodati = razlika / 2;
                        rezultati[0].tim[0] += zaDodati;
                        rezultati[0].tim[1] += zaDodati;
                        potroseniPoeni += razlika;
                        /*while (potroseniPoeni < brojPoena)
                        {
                            /*rezultati[0].tim[0]++;
                            rezultati[0].tim[1]++;
                            potroseniPoeni += 2;
                        }*/
                    }
                    goto c;
                }
            }
            //Console.WriteLine("Potroseno " + potroseniPoeni);
            int k = rezultati.Count;
            if (k == 3)
            {
                Console.WriteLine(rezultati[0].tim[0] + " " + rezultati[0].tim[1]);
                Console.WriteLine(rezultati[1].tim[1] + " " + rezultati[1].tim[0]);
                Console.WriteLine(rezultati[2].tim[0] + " " + rezultati[2].tim[1]);
            }
            else if (k == 4)
            {
                Console.WriteLine(rezultati[0].tim[0] + " " + rezultati[0].tim[1]);
                Console.WriteLine(rezultati[1].tim[0] + " " + rezultati[1].tim[1]);
                Console.WriteLine(rezultati[2].tim[0] + " " + rezultati[2].tim[1]);
                Console.WriteLine(rezultati[3].tim[1] + " " + rezultati[3].tim[0]);
            }
            else
            {
                foreach (Rezultat r in rezultati)
                {
                    Console.WriteLine(r.tim[0] + " " + r.tim[1]);
                }
            }
        }
    }
}
/*
?????? 1
????
92 10
?????
10 7
3 10
12 10
13 15
10 2
?????? 2
????
20 20
?????
-1
?????? 3
????
163 25
?????
25 17
12 25
25 23
25 11
*/