#include <iostream>
using namespace std;

/**
Da bi novinar izmislio rezultat, moze da ima samo 3 seta.
Resenje ne postoji akko N < 3A, zbog toga sto minimalan
rezultat A:0 ; A:0 ; A:0 nije moguc
Moje resenje se bazira na minimalnom slucaju
Ako N >= 3A && N < 4A
    Onda imamo, A:0 ; A:0 ; A:N-3A
Ako N >= 4A
    Mozemo da stavimo 2 seta A:0 ; A:0
    3. set mozemo da stavimo
    ((N - 2A) / 2 + 1):((N - 2A) / 2 - 1)(Ukoliko je broj neparan N - 2A + 1, tj. jedan poen prebacujemo na Zivkov tim)
    Oba rezultata ce biti veca of A, jer N >= 4A
    Razlika je po def. 2
*/

void prikaziRezultat(int N, int A){
    if (N < 3*A)
        cout << -1;
    else if (N >= 3*A && N < 4){
        cout << A << " " << 0 << endl;
        cout << A << " " << 0 << endl;
        cout << A << " " << N - 3*A << endl;
    } else {
        if (N % 2 == 0){
            N -= 2*A;
            cout << A << " " << 0 << endl;
            cout << A << " " << 0 << endl;
            cout << (N / 2 + 1) << " " << (N / 2 - 1);
        } else {
            N -= 2*A + 1;
            cout << A << " " << 0 << endl;
            cout << A << " " << 1 << endl;
            cout << (N / 2 + 1) << " " << (N / 2 - 1);
        }
    }
}

int main()
{
    int N, A;
    cin >> N >> A;
    prikaziRezultat(N, A);
    return 0;
}