#include <bits/stdc++.h>

using namespace std;

int main(int argc, char** argv)
{
	// Ukupan broj postognutih poena u mecu, i
	// minimalni broj poena potreban za pobedu u setu
	
	long long int ukupan;
	long long int minimalni;
	
	// Brojac u petljama
	
	int i;
	
	// ucitavamo podatke
	
	cin >> ukupan;
	cin >> minimalni;
	
	// Ukoliko je uneto broj poena suvise mali za tri seta,
	// jer je teoretski svaki rezultat moguc u tri seta,
	// znaci da rezultat nije moguc i vracamo -1
	
	if( ukupan < 3 * minimalni )
	{
		cout << "-1";
		return 0;
	}
	
	// matrica za rezultate, 4 reda da bi set isao od 1 do 3,
	// a ne od 0 do 2 (tri seta planiramo da budu odigrana)
	
	long long int set[4][2];
	
	// Postavljamo pocetni broj poena po setovima
	// koje cemo kasnije da podesavamo do odgovarajuceg
	// broja poena
	
	set[1][0] = minimalni;
	set[1][1] = minimalni -2;
	set[2][0] = minimalni;
	set[2][1] = minimalni -2;
	set[3][0] = minimalni;
	set[3][1] = minimalni -2;
	
	long long int suma = 6 * ( minimalni - 1 );
	
	// U petlji smo dokle god je zbir poena po setovima razlicit od unetog broj postignutih poena
	
	while ( suma != ukupan )
	{
		if( ukupan > suma )
		{
			// Ukoliko je ukupan broj poena veci od trenutne sume,
			// znaci da moramo da dodamo poene u nekim setovima

			long long int razlika = ukupan - suma;

			if ( razlika % 2 == 0 )
			{
				// Ako je razlika ukupnog broj poena i sume parna,
				// moramo da nadjemo set gde je razlika tacno 2
				// i da povecamo broj poena za oba tima podjednako
				// i nasli smo konacan rezultat

				for ( i = 1 ; i <= 3 ; i++ )
				{
					if ( set[i][0] - set[i][1] == 2 )
					{
						set[i][0] += razlika / 2;
						set[i][1] += razlika / 2;
						break;
					}
				}

				// Ako nismo nasli takav set, onda je nemoguc rezultat.
				
				if ( i == 4 )
				{
					cout << "-1";
					return 0;
				}
			}
			else
			{
				// Ako je razlika ukupnog broj poena i sume neparna,
				// moramo da nadjemo set gde je razlika veca od 2
				// i da dodamo jedan poen timu sa manje poena, pa da
				// u narednom ulasku u petlju trazimo dodatno podesavanje
				
				for ( i = 1 ; i <= 3 ; i++ )
				{
					if ( set[i][0] - set[i][1] > 2 )
					{
						set[i][1]++;
						break;
					}
				}
				
				// Ako nismo nasli takav set, onda trazimo set gde mozemo
				// da umanjimo broj poena timu koji gubi, da bismo
				// napravili parnu razliku

				if ( i == 4 )
				{
					for ( i = 1 ; i <= 3 ; i++ )
					{
						if ( set[i][1] > 0 )
						{
							set[i][1]--;
							break;
						}
					}
				}
				
				// Ako nismo nasli odgovarajuci set, onda je nemoguc rezultat
				
				if ( i == 4 )
				{
					cout << "-1";
					return 0;
				}
			}
		}
		else
		{
			// Ukoliko je ukupan broj poena manji od trenutne sume,
			// znaci da moramo da oduzmemo poene u nekim setovima

			// Trazimo set gde tim koji gubi ima vise od jednog poena
			// i umanjujemo za jedan, pa idemo u naredni krog petlje
			
			for ( i = 1 ; i <= 3 ; i++ )
			{
				if ( set[i][1] > 0 )
				{
					set[i][1]--;
					break;
				}
			}

			// Ako nismo nasli takav set, onda je nemoguc rezultat.

			if ( i == 4 )
			{
				cout << "-1";
				return 0;
			}
		}

		// racunanje tekuce sume poena pred ulazak u naredni krug petlje
		
		suma = set[1][0] + set[1][1] + set[2][0] + set[2][1] + set[3][0] + set[3][1];
	}
	
	// Stampa rezultata
	
	printf("%d %d\n%d %d\n%d %d\n",set[1][0],set[1][1],set[2][0],set[2][1],set[3][0],set[3][1]);
		
	return 0;
}