#include <bits/stdc++.h>
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
using namespace std;
double dp[111][111][111][3];
vector<double> dfs(int r, int s, int p) {
  if ((r == 0 && s == 0) || (s == 0 && p == 0) || (p == 0 && r == 0)) {
    vector<double> ret(3);
    if (r) ret[0] = 1;
    if (s) ret[1] = 1;
    if (p) ret[2] = 1;
    for (int i = 0; i < 3; i++) {
      dp[r][s][p][i] = ret[i];
    }
    return ret;
  }
  if (dp[r][s][p][0] >= 0) {
    vector<double> ret(3);
    for (int i = 0; i < 3; i++) ret[i] = dp[r][s][p][i];
    return ret;
  }
  vector<double> ret(3);
  int zentai = r * s + s * p + p * r;
  if (r > 0 && s > 0) {
    double P = (1. * r * s) / zentai;
    auto q = dfs(r, s - 1, p);
    for (int i = 0; i < 3; i++) {
      ret[i] += P * q[i];
    }
  }
  if (s > 0 && p > 0) {
    double P = (1. * s * p) / zentai;
    auto q = dfs(r, s, p - 1);
    for (int i = 0; i < 3; i++) {
      ret[i] += P * q[i];
    }
  }
  if (p > 0 && r > 0) {
    double P = (1. * p * r) / zentai;
    auto q = dfs(r - 1, s, p);
    for (int i = 0; i < 3; i++) {
      ret[i] += P * q[i];
    }
  }
  for (int i = 0; i < 3; i++) {
    dp[r][s][p][i] = ret[i];
  }
  return ret;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int r, s, p;
  cin >> r >> s >> p;
  for (int i = 0; i < 111; i++)
    for (int j = 0; j < 111; j++)
      for (int k = 0; k < 111; k++)
        for (int l = 0; l < 3; l++) dp[i][j][k][l] = -1;
  dfs(r, s, p);
  printf("%.15lf %.15lf %.15lf\n", dp[r][s][p][0], dp[r][s][p][1],
         dp[r][s][p][2]);
  return 0;
}
