#include <bits/stdc++.h>
using namespace std;
vector<vector<vector<long double> > > anthill;
long double computeProb(long double rock, long double scissor,
                        long double paper) {
  if (anthill[rock][scissor][paper] != -1.0) {
    return anthill[rock][scissor][paper];
  }
  long double denom = (rock * scissor) + (scissor * paper) + (paper * rock);
  if (rock == 0.0) {
    anthill[rock][scissor][paper] = 1.0;
    return 0.0;
  }
  if (paper == 0.0) {
    anthill[rock][scissor][paper] = 1.0;
    return 1.0;
  }
  if (scissor == 0.0) {
    anthill[rock][scissor][paper] = 0.0;
    return 0.0;
  }
  anthill[rock][scissor][paper] =
      ((rock * scissor * computeProb(rock, scissor - 1, paper)) / denom) +
      ((rock * paper * computeProb(rock - 1, scissor, paper)) / denom) +
      ((paper * scissor * computeProb(rock, scissor, paper - 1)) / denom);
  return anthill[rock][scissor][paper];
}
int main() {
  int r;
  int s;
  int p;
  cout.precision(10);
  cin >> r >> s >> p;
  anthill = vector<vector<vector<long double> > >(
      r + 1,
      vector<vector<long double> >(s + 1, vector<long double>(p + 1, -1.0)));
  long double probRock =
      computeProb((long double)r, (long double)s, (long double)p);
  anthill = vector<vector<vector<long double> > >(
      s + 1,
      vector<vector<long double> >(p + 1, vector<long double>(r + 1, -1.0)));
  long double probScissor =
      computeProb((long double)s, (long double)p, (long double)r);
  cout << probRock << " " << probScissor << " "
       << (1.0 - probRock - probScissor) << endl;
  return 0;
}
