import std.algorithm;
import std.array;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

void scan(T...)(ref T a) {
    string[] ss = readln.split;
    foreach (i, t; T) a[i] = ss[i].to!t;
}
T read(T)() { return readln.chomp.to!T; }
T[] reads(T)() { return readln.split.to!(T[]); }
alias readint = read!int;
alias readints = reads!int;

int[] calc(int N, int Y) {
    // x + y + z = N
    // 10,000 * x + 5,000 * y + 1,000 * z = Y
    // 上を 10,000 倍して、下から引くと、
    // 5,000 * y + 9,000 * z = 10,000 * N - Y
    // y をループ回して固定化して、z を求める:
    // z = (10,000 * N - Y - 5,000 * y) / 9,000

    for (int y = 0; y <= N; y++) {
        int z = 10000 * N - Y - 5000 * y;
        if (z < 0 || z % 9000 != 0) continue;

        z /= 9000;
        int x = N - (y + z);
        if (x >= 0)
            return [x, y, z];
    }
    return [-1, -1, -1];
}

void main() {
    int N, Y; scan(N, Y);

    auto ans = calc(N, Y);
    writeln(ans.map!(text).join(" "));
}
