#include int check[51][51][51][51][4]; double check2[51][51][51][51][4]; double func(int k, int a, int b, int c, int mode) { if(a<=0) return 0; if(b<=0) return 0; if(c<=0) return 0; if(k==0) return 0; if(check[k][a][b][c][mode]) return check2[k][a][b][c][mode]; int s1 = a*(a-1)/2; int s2 = b*(b-1)/2; int s3 = c*(c-1)/2; int t = (a+b+c)*(a+b+c-1)/2; double val1 = func(k-1,a-1,b,c,mode)*s1/t + func(k-1,a,b-1,c,mode)*s2/t + func(k-1,a,b,c-1,mode)*s3/t; double val2 = func(k-1,a,b,c,mode)*(t-s1-s2-s3)/t; if(mode==1) val1 += (double)s1/t; if(mode==2) val1 += (double)s2/t; if(mode==3) val1 += (double)s3/t; check[k][a][b][c][mode] = 1; return check2[k][a][b][c][mode] = val1+val2; } int main() { int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); for(int i=1;i<=3;i++) printf("%.12lf ",func(d,a,b,c,i)); }