#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ld = long double; tuple tp = {-1, -1, -1}; vector>>>> ans(51, vector(51, vector(51, vector>(51, tp)))); tuple f(int n, int a, int b, int c){ if (n == 0) return {0, 0, 0}; if (ans[n][a][b][c] != tp) return ans[n][a][b][c]; ld s = a+b+c, pa = a*(a-1)/s/(s-1), pb= b*(b-1)/s/(s-1), pc = c*(c-1)/s/(s-1); ld x=0, y=0, z=0, xx, yy, zz; tie(xx, yy, zz) = f(n-1, a, b, c); x += xx * (1.0l-pa-pb-pc); y += yy * (1.0l-pa-pb-pc); z += zz * (1.0l-pa-pb-pc); if (a>1){ tie(xx, yy, zz) = f(n-1, a-1, b, c); x += (xx+1) * pa; y += yy * pa; z += zz * pa; } if (b>1){ tie(xx, yy, zz) = f(n-1, a, b-1, c); x += xx * pb; y += (yy+1) * pb; z += zz * pb; } if (c>1){ tie(xx, yy, zz) = f(n-1, a, b, c-1); x += xx * pc; y += yy * pc; z += (zz+1) * pc; } return ans[n][a][b][c] = {x, y, z}; } int main(){ int a, b, c, n; cin >> a >> b >> c >> n; ld x, y, z; tie(x, y, z) = f(n, a, b, c); cout << setprecision(18) << x << " " << y << " " << z << endl; return 0; }