#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, const char * argv[]) {
    long long unsigned int pavle_poeni=0,zivko_poeni=0;
    long long unsigned int pavle_set_poeni[3],zivko_set_poeni[3];
    long long unsigned int moguca_utakmica=1,zbir=0,poeni=0,razlika=0;
    long long unsigned int A, N;
    int pavle_osvojeni_set =0,k=0;
    cin>>N;
    cin>>A;
    if ((A*3)>N){
        moguca_utakmica= 0;
    }
    while (pavle_osvojeni_set!=3)
    {
        if (pavle_osvojeni_set==2)
        {
            poeni = (N-zbir)/2;
            razlika= (N-zbir)%2;
            if (poeni>A)
            {
                pavle_poeni = poeni + 1 ;
                zivko_poeni = poeni - 1 ;
            }
            else
            {
                pavle_poeni=A;
                zivko_poeni= 0;
            }
            if (razlika!= 0)
            {
                zivko_set_poeni[1]=1;
                if ((pavle_set_poeni[1]-zivko_set_poeni[1])<2)
                {
                    moguca_utakmica=0;
                    
                }
            }
        }
        else
        {
            pavle_poeni= A;
            zivko_poeni= 0 ;
        }
        pavle_set_poeni[k]= pavle_poeni;
        zivko_set_poeni[k]=zivko_poeni;
        zbir = zbir + pavle_poeni + zivko_poeni;
        if(razlika!=0)
        {
            zbir+=1;
        }
        pavle_osvojeni_set+=1;
        k++;
    
    }
    int i ;
    if ((zbir == N)&&(moguca_utakmica==1))
    {
        for(i=0;i<3;i++)
        {
            cout<<pavle_set_poeni[i]<<" "<<zivko_set_poeni[i]<<endl;
        }
    }
    else {
        cout<<-1;
    }
    return 0;
}