#include <bits/stdc++.h>
using namespace std;
double DPR[103][103][103];
double DPS[103][103][103];
double DPP[103][103][103];
int R, S, P;
int main() {
  scanf("%d%d%d", &R, &S, &P);
  for (int i = 0; i < 103; i++) {
    for (int j = 0; j < 103; j++) {
      for (int k = 0; k < 103; k++) {
        if (i == 0 && j == 0)
          DPP[i][j][k] = 1;
        else if (i == 0 && k == 0)
          DPS[i][j][k] = 1;
        else if (j == 0 && k == 0)
          DPR[i][j][k] = 1;
        else if (i == 0)
          DPS[i][j][k] = 1;
        else if (j == 0)
          DPP[i][j][k] = 1;
        else if (k == 0)
          DPR[i][j][k] = 1;
      }
    }
  }
  for (int i = 1; i <= R; i++) {
    for (int j = 1; j <= S; j++) {
      for (int k = 1; k <= P; k++) {
        double P;
        double P1 = (double)i + (double)j + (double)k;
        P1 = (double)i * (double)j + (double)k * (double)j +
             (double)i * (double)k;
        P = ((double)i * (double)j) / P1;
        DPP[i][j][k] += P * DPP[i][j - 1][k];
        DPR[i][j][k] += P * DPR[i][j - 1][k];
        DPS[i][j][k] += P * DPS[i][j - 1][k];
        P = ((double)k * (double)j) / P1;
        DPP[i][j][k] += P * DPP[i][j][k - 1];
        DPR[i][j][k] += P * DPR[i][j][k - 1];
        DPS[i][j][k] += P * DPS[i][j][k - 1];
        P = ((double)i * (double)k) / P1;
        DPP[i][j][k] += P * DPP[i - 1][j][k];
        DPR[i][j][k] += P * DPR[i - 1][j][k];
        DPS[i][j][k] += P * DPS[i - 1][j][k];
      }
    }
  }
  printf("%.18f %.18f %.18f\n", DPR[R][S][P], DPS[R][S][P], DPP[R][S][P]);
  return 0;
}
