#include using namespace std; typedef long long ll; typedef pair P; #define DUMP(x) cout << #x << " = " << (x) << endl; #define FOR(i, m, n) for (ll i = m; i < n; i++) #define IFOR(i, m, n) for (ll i = n - 1; i >= m; i--) #define REP(i, n) FOR(i, 0, n) #define IREP(i, n) IFOR(i, 0, n) #define ALL(v) (v).begin(), (v).end() #define SZ(x) ll(x.size()) ll a, b, c, n; double dp[51][51][51][51]; double calc(ll l, ll i, ll j, ll k) { if (dp[l][i][j][k] >= -0.1) { return dp[l][i][j][k]; } double res = 0.0; ll s = i + j + k; if (s > 1) { res += calc(l - 1, i, j, k) * (i * j + j * k + k * i) * 2 / (s * (s - 1)); } if (s > 0) { res += calc(l - 1, i + 1, j, k) * (i + 1) * i / (s * (s + 1)); res += calc(l - 1, i, j + 1, k) * (j + 1) * j / (s * (s + 1)); res += calc(l - 1, i, j, k + 1) * (k + 1) * k / (s * (s + 1)); } return dp[l][i][j][k] = res; } int main() { cin >> a >> b >> c >> n; REP(i, a + 1) REP(j, b + 1) REP(k, c + 1) REP(l, n + 1) { dp[l][i][j][k] = -1; dp[0][i][j][k] = 0.0; } dp[0][a][b][c] = 1.0; vector ans(3); REP(i, a + 1) REP(j, b + 1) REP(k, c + 1) { if (i + j + k == 0) { continue; } ans[0] += calc(n, i, j, k) * (a - i); ans[1] += calc(n, i, j, k) * (b - j); ans[2] += calc(n, i, j, k) * (c - k); } cout << fixed << setprecision(10); REP(i, 3) { cout << ans[i] << " \n"[i + 1 == 3]; } }