#include <bits/stdc++.h>
using namespace std;
struct Itm {
  set<int> edge;
  int coin[3];
  char color;
};
using u_ll = unsigned long long;
using ll = long long;
using u_int = unsigned int;
int NOD(int a, int b) {
  int tmp = a < b ? a : b;
  while (a % tmp != 0 || b % tmp != 0) {
    tmp--;
  }
  return tmp;
}
bool task(ll& n, ll& p, ll& w, ll& d) {
  ll i, y, x;
  u_int tmp = w - d;
  if (p > n * w) return 1;
  if (p >= w) {
    int nod = NOD(w, d);
    if (p % nod != 0) return 1;
    x = p / w;
    y = 0;
    ll ost = (x * w + y * d) - p;
    while (ost != 0) {
      if (ost < 0) {
        bool b = (ost % d != 0);
        y += (-ost / d + b);
        if (!b) break;
      } else {
        bool b = (ost % tmp != 0);
        y += (ost / tmp + b);
        x -= (ost / tmp + b);
        if (!b) break;
      }
      ost = (x * w + y * d) - p;
    }
    if (x + y > n) return 2;
  } else {
    if (p % d != 0) return 3;
    x = 0;
    y = p / d;
  }
  if (x * w + y * d != p) return 1;
  cout << x << " " << y << " " << n - x - y << endl;
  return 0;
}
int main() {
  ll n, p, w, d;
  cin >> n >> p >> w >> d;
  if (task(n, p, w, d) != 0) cout << -1 << endl;
  return 0;
}
