#include <bits/stdc++.h>
using namespace std;
long long g;
long long egcd(long long a, long long b, long long &x, long long &y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  long long ans = egcd(b, a % b, x, y), tmp = x;
  x = y;
  y = tmp - a / b * y;
  return ans;
}
long long qmul(long long x, long long y, long long p) {
  long long ans = 0;
  while (y) {
    if (y & 1) ans = (ans + x) % p;
    x = (x + x) % p;
    y >>= 1;
  }
  return ans;
}
long long cal(long long a, long long b, long long c) {
  long long x, y;
  g = egcd(a, b, x, y);
  if (c % g != 0) return -1;
  b = abs(b / g);
  x = qmul((x + b * 10000000000000ll) % b, c / g, b);
  return x;
}
long long ceil(long long, long long);
long long floor(long long x, long long y) {
  return x >= 0 ? x / y : -ceil(-x, y);
}
long long ceil(long long x, long long y) {
  return x >= 0 ? (x + y - 1) / y : -floor(-x, y);
}
int main() {
  long long n, p, d, w;
  cin >> n >> p >> w >> d;
  long long x = cal(w, d, p);
  if (x == -1) {
    puts("-1");
    return 0;
  }
  long long y = (p - w * x) / d,
            tmp = max(0ll, d > w ? floor(n - x - y, (d - w) / g)
                                 : ceil(x + y - n, (w - d) / g));
  x += d / g * tmp, y -= w / g * tmp;
  if (x >= 0 && y >= 0 && x + y <= n)
    printf("%lld %lld %lld\n", x, y, n - x - y);
  else
    puts("-1");
  return 0;
}
