#include <bits/stdc++.h>
using namespace std;
typedef long double typeR[3][1100000];
long index(long r, long s, long p) { return r + s * 101 + p * 101 * 101; }
void calc(long r, long s, long p, long double** result) {
  long indx = index(r, s, p);
  for (int i = 0; i <= 2; i++) result[i][indx] = 0;
  if ((r == 0) && (s == 0) && (p == 0)) return;
  if ((r >= 1) && (p == 0)) {
    result[0][indx] = 1;
    return;
  }
  if ((s >= 1) && (r == 0)) {
    result[1][indx] = 1;
    return;
  }
  if ((p >= 1) && (s == 0)) {
    result[2][indx] = 1;
    return;
  }
  long double sum = p * r + s * r + p * s;
  long double pr = p * r / sum;
  long double ps = s * r / sum;
  long double pp = p * s / sum;
  result[0][indx] = pr * result[0][index(r - 1, s, p)] +
                    ps * result[0][index(r, s - 1, p)] +
                    pp * result[0][index(r, s, p - 1)];
  result[1][indx] = pr * result[1][index(r - 1, s, p)] +
                    ps * result[1][index(r, s - 1, p)] +
                    pp * result[1][index(r, s, p - 1)];
  result[2][indx] = pr * result[2][index(r - 1, s, p)] +
                    ps * result[2][index(r, s - 1, p)] +
                    pp * result[2][index(r, s, p - 1)];
}
int main() {
  int r, s, p;
  cin >> r >> s >> p;
  long double** result;
  result = new long double*[3];
  for (int i = 0; i < 3; i++) {
    result[i] = new long double[1100000];
  }
  for (int ir = 0; ir <= r; ir++)
    for (int is = 0; is <= s; is++)
      for (int ip = 0; ip <= p; ip++) {
        calc(ir, is, ip, result);
      }
  cout << fixed << setprecision(12) << result[0][index(r, s, p)] << " "
       << result[1][index(r, s, p)] << " " << result[2][index(r, s, p)] << endl;
  return 0;
}
