#include <bits/stdc++.h>
using namespace std;
double dp[3][101][101][101];
double solve(int which, int r, int s, int p) {
  if (dp[which][r][s][p] != -1) return dp[which][r][s][p];
  if (which == 0) {
    if (r == 0)
      return dp[which][r][s][p] = 0;
    else if (s == 0 && p == 0)
      return dp[which][r][s][p] = 1.0;
    else if (s == 0)
      return dp[which][r][s][p] =
                 1.0 * r * p * solve(which, r - 1, s, p) / (r * p);
    else if (p == 0)
      return dp[which][r][s][p] =
                 1.0 * r * s * solve(which, r, s - 1, p) / (r * s);
    else {
      double ret =
          1.0 * r * s * solve(which, r, s - 1, p) / (r * s + r * p + s * p);
      ret += 1.0 * r * p * solve(which, r - 1, s, p) / (r * s + r * p + s * p);
      ret += 1.0 * s * p * solve(which, r, s, p - 1) / (r * s + r * p + s * p);
      return dp[which][r][s][p] = ret;
    }
  } else if (which == 1) {
    if (s == 0)
      return dp[which][r][s][p] = 0;
    else if (r == 0 && p == 0)
      return dp[which][r][s][p] = 1.0;
    else if (r == 0)
      return dp[which][r][s][p] =
                 1.0 * s * p * solve(which, r, s, p - 1) / (s * p);
    else if (p == 0)
      return dp[which][r][s][p] =
                 1.0 * r * s * solve(which, r, s - 1, p) / (r * s);
    else {
      double ret =
          1.0 * r * s * solve(which, r, s - 1, p) / (r * s + r * p + s * p);
      ret += 1.0 * r * p * solve(which, r - 1, s, p) / (r * s + r * p + s * p);
      ret += 1.0 * s * p * solve(which, r, s, p - 1) / (r * s + r * p + s * p);
      return dp[which][r][s][p] = ret;
    }
  } else {
    if (p == 0)
      return dp[which][r][s][p] = 0;
    else if (r == 0 && s == 0)
      return dp[which][r][s][p] = 1.0;
    else if (r == 0)
      return dp[which][r][s][p] =
                 1.0 * s * p * solve(which, r, s, p - 1) / (s * p);
    else if (s == 0)
      return dp[which][r][s][p] =
                 1.0 * r * p * solve(which, r - 1, s, p) / (r * p);
    else {
      double ret =
          1.0 * r * s * solve(which, r, s - 1, p) / (r * s + r * p + s * p);
      ret += 1.0 * r * p * solve(which, r - 1, s, p) / (r * s + r * p + s * p);
      ret += 1.0 * s * p * solve(which, r, s, p - 1) / (r * s + r * p + s * p);
      return dp[which][r][s][p] = ret;
    }
  }
}
int main() {
  int r, s, p;
  cin >> r >> s >> p;
  for (int i = 0; i < 3; i++) {
    for (int x = 0; x <= 100; x++) {
      for (int y = 0; y <= 100; y++) {
        for (int z = 0; z <= 100; z++) {
          dp[i][x][y][z] = -1;
        }
      }
    }
  }
  cout << fixed << setprecision(9) << solve(0, r, s, p) << " "
       << solve(1, r, s, p) << " " << solve(2, r, s, p) << endl;
}
