A, B, C, N = map(int, input().split()) # Initialize the DP table for k=0 (all zeros) prev_dp = [[[ (0.0, 0.0, 0.0) for _ in range(C+1)] for __ in range(B+1)] for ___ in range(A+1)] for step in range(N): current_dp = [[[0.0 for _ in range(3)] for __ in range(B+1)] for ___ in range(A+1)] for a in range(A+1): for b in range(B+1): for c in range(C+1): total = a + b + c if total < 2: current_dp[a][b][c] = (0.0, 0.0, 0.0) continue total_choose = total * (total - 1) // 2 expected_w = 0.0 expected_b = 0.0 expected_cr = 0.0 # Same white if a >= 2: pairs = a * (a - 1) // 2 prob = pairs / total_choose new_a = a - 1 ew, eb, ecr = prev_dp[new_a][b][c] expected_w += prob * (1.0 + ew) expected_b += prob * eb expected_cr += prob * ecr # Same black if b >= 2: pairs = b * (b - 1) // 2 prob = pairs / total_choose new_b = b - 1 ew, eb, ecr = prev_dp[a][new_b][c] expected_b += prob * (1.0 + eb) expected_w += prob * ew expected_cr += prob * ecr # Same brown if c >= 2: pairs = c * (c - 1) // 2 prob = pairs / total_choose new_c = c - 1 ew, eb, ecr = prev_dp[a][b][new_c] expected_cr += prob * (1.0 + ecr) expected_w += prob * ew expected_b += prob * eb # Different pairs # White and Black if a > 0 and b > 0: pairs = a * b prob = pairs / total_choose ew, eb, ecr = prev_dp[a][b][c] expected_w += prob * ew expected_b += prob * eb expected_cr += prob * ecr # White and Brown if a > 0 and c > 0: pairs = a * c prob = pairs / total_choose ew, eb, ecr = prev_dp[a][b][c] expected_w += prob * ew expected_b += prob * eb expected_cr += prob * ecr # Black and Brown if b > 0 and c > 0: pairs = b * c prob = pairs / total_choose ew, eb, ecr = prev_dp[a][b][c] expected_w += prob * ew expected_b += prob * eb expected_cr += prob * ecr current_dp[a][b][c] = (expected_w, expected_b, expected_cr) prev_dp = current_dp final = prev_dp[A][B][C] print(final[0], final[1], final[2])