#include <bits/stdc++.h>
using namespace std;
const int MAXN = -1;
int s, A[3];
pair<int, int> B[3];
double ans[3], last_best;
double Q(double c, double d) {
  return B[0].first * log(c) + B[1].first * log(d) +
         B[2].first * log(((double)s - c - d));
}
double P(double c) {
  double a = 0.0;
  double b = (double)s - c;
  int cnt = 300;
  while (cnt--) {
    double m1 = b / 3.0 + a * 2.0 / 3.0;
    double m2 = a / 3.0 + b * 2.0 / 3.0;
    if (Q(c, m1) < Q(c, m2)) {
      a = m1;
    } else {
      b = m2;
    }
  }
  last_best = a;
  return Q(c, a);
}
int main() {
  while (scanf("%d", &s) >= 1) {
    int zeroes = 0;
    for (int i = (0); i < (int)(3); i++) {
      scanf("%d", &A[i]);
      if (!A[i]) zeroes++;
      B[i] = {A[i], i};
    }
    sort(B, B + 3);
    reverse(B, B + 3);
    double a = 0.0;
    double b = (double)s;
    int cnt = 300;
    if (zeroes >= 2) {
      for (int i = (0); i < (int)(3); i++) {
        if (A[i] == 0)
          ans[i] = 0.0;
        else
          ans[i] = s;
      }
      goto hell;
    }
    while (cnt--) {
      double m1 = b / 3.0 + a * 2.0 / 3.0;
      double m2 = a / 3.0 + b * 2.0 / 3.0;
      if (P(m1) < P(m2)) {
        a = m1;
      } else {
        b = m2;
      }
    }
    ans[B[0].second] = a;
    ans[B[1].second] = last_best;
    ans[B[2].second] = (double)s - a - last_best;
  hell:
    for (int i = (0); i < (int)(3); i++) {
      if (i) printf(" ");
      printf("%.10f", ans[i]);
    }
    puts("");
  }
  return 0;
}
