#include <bits/stdc++.h>

using namespace std;

long long rezA[3];
long long rezB[3];

bool moze(long long A,long long N)
{
    for(int i = 0; i < 3; i++)
    {
        if(N < 3*A) return false;
        if(rezA[i] < A && rezB[i] < A) return false;
        if(rezA[i] - rezB[i] < 2) return false;
        if(rezA[i] > A && rezA[i]-rezB[i] > 2) return false;
    }

    return true;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    long long N , A;
    cin>>N>>A;

    if(N%2 == 0)
    {
        rezA[0] = A; rezB[0] = 0;
        rezA[1] = A; rezB[1] = 0;
        if(N-(2*A) == A) {rezA[2] = A; rezB[2] = 0;}
        else {rezA[2] = (N-(2*A)+2)/2; rezB[2] = rezA[2] - 2;}

        if(!moze(A,N)) {rezA[2] = A; rezB[2] = (N-2*A)-rezA[2];}

    }
    else
    {
        rezA[0] = A; rezB[0] = 0;
        rezA[1] = A; rezB[1] = 0;
        rezA[2] = (N-(2*A)+3)/2; rezB[2] = rezA[2] - 3;

       // if(!moze(A,N)) {rezA[2] = A; rezB[2] = (N-2*A)-rezA[2];}

        if((rezA[2]> A && rezA[2]-rezB[2]> 2) || (rezA[2]<A && rezB[2]<A))
        {
            rezA[0] = A; rezB[0] = 1;
            rezA[1] = A; rezB[1] = 0;
            if(N-(2*A+1) == A) {rezA[2] = A; rezB[2] = 0; }
            else {rezA[2] = (N-(2*A+1)+2)/2; rezB[2] = rezA[2] - 2;}
        }

        if(!moze(A,N)) {rezA[2] = A; rezB[2] = (N-2*A)-rezA[2]; rezA[0] = A; rezB[0] = 0;}
        if(!moze(A,N)) {rezA[2] = A; rezB[2] = (N-2*A-1)-rezA[2]; rezA[0] = A; rezB[0] = 1;}
    }

    bool ok = moze(A,N);
    if(!ok) {cout<< -1;}
    else
    {
        for(int i = 0; i < 3; i++)
        {
            cout<<rezA[i]<<" "<<rezB[i]<<endl;
        }
    }



    return 0;
}