void main(){
	long n, y;
	readf("%d %d", &n, &y);
	bool is_exist = false;
	foreach(i; 0..n+1){
		foreach(j; 0..n+1){
			if(i+j>n)break;
			if(10000*i + 5000*j +1000*(n-i-j) == y ){
				writefln("%d %d %d", i, j, n-i-j);
				return;
			}
		}
	}
	writeln("-1 -1 -1");
}

import std.stdio, std.conv, std.algorithm, std.numeric, std.string, std.math;

// 1要素のみの入力
T _scan(T= int)(){
	return to!(T)( readln().chomp() );
}

// 1行に同一型の複数入力
T[] _scanln(T = int)(){
	T[] ln;
	foreach(string elm; readln().chomp().split()){
		ln ~= elm.to!T();
	}
	return ln;
}
