#include<stdio.h>
#include<string.h>
#include<math.h>
#include<string>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
#include<set>
#define MEM(a) memset(a,0,sizeof(a))
typedef long long ll;
using namespace std;
double myc(int n,int r)
{
double sum=1;
for(int i=1;i<=r;i++)
{
sum=sum*(n-i+1)/i;
}
return sum;
}
double dp[105][105][105],ans[3];
int main()
{
int r,s,p,i,j,k;
scanf("%d %d %d",&r,&s,&p);
MEM(dp);
dp[r][s][p]=1;
for(i=r;i>=0;i--)
{
for(j=s;j>=0;j--)
{
for(k=p;k>=0;k--)
{
if(i==0&&j==0||i==0&&k==0||j==0&&k==0)
continue;
double t;
/* t=myc(i+j+k,2);
if(i>=2)
t-=myc(i,2);
if(j>=2)
t-=myc(j,2);
if(k>=2)
t-=myc(k,2);*/
t=i*j+j*k+i*k;
// printf("%d %lf\n",i*j+j*k+i*k,t);
if(k>=1)
dp[i][j][k-1]+=dp[i][j][k]*(j*k*1.0/t);
if(j>=1)
dp[i][j-1][k]+=dp[i][j][k]*(i*j*1.0/t);
if(i>=1)
dp[i-1][j][k]+=dp[i][j][k]*(i*k*1.0/t);
}
}
}
ans[0]=ans[1]=ans[2]=0;
for(i=1;i<=100;i++)
{
ans[0]+=dp[i][0][0];
ans[1]+=dp[0][i][0];
ans[2]+=dp[0][0][i];
}
printf("%.10lf %.10lf %.10lf ",ans[0],ans[1],ans[2]);
return 0;
}