#include <bits/stdc++.h>
using namespace std;
struct triple {
  double r, s, p;
  triple operator*(double m) { return {m * r, m * s, m * p}; }
  triple operator+(const triple& t) { return {r + t.r, s + t.s, p + t.p}; }
};
int main() {
  int r, s, p;
  cin >> r >> s >> p;
  vector<vector<vector<triple>>> d(101);
  for (auto& vv : d) {
    vv.resize(101);
    for (auto& v : vv) {
      v.resize(101);
    }
  }
  for (int i = 1; i <= 100; i++) {
    for (int j = 1; j <= 100; j++) {
      d[0][i][j] = {0, 1, 0};
      d[i][0][j] = {0, 0, 1};
      d[i][j][0] = {1, 0, 0};
    }
  }
  for (int i = 1; i <= r; i++) {
    for (int j = 1; j <= s; j++) {
      for (int k = 1; k <= p; k++) {
        double all = (i * j + j * k + k * i);
        d[i][j][k] = d[i - 1][j][k] * (k * i / all) +
                     d[i][j - 1][k] * (i * j / all) +
                     d[i][j][k - 1] * (j * k / all);
      }
    }
  }
  cout.precision(12);
  cout << d[r][s][p].r << " " << d[r][s][p].s << " " << d[r][s][p].p;
  return 0;
}
