#include <bits/stdc++.h>
using namespace std;
const long long int N = 2e6 + 1000;
long long int tt, n, m, k;
double dp[101][101][101][3];
bool mark[101][101][101];
string s, t;
void build(long long int a, long long int b, long long int c) {
  mark[a][b][c] = true;
  dp[a][b][c][0] = dp[a][b][c][1] = dp[a][b][c][2] = 0;
  if (!a) {
    dp[a][b][c][1] = 1;
    return;
  }
  if (!b) {
    dp[a][b][c][2] = 1;
    return;
  }
  if (!c) {
    dp[a][b][c][0] = 1;
    return;
  }
  double aa = a * b, bb = b * c, cc = c * a,
         h = ((a + c + b) * (a + c + b - 1)) / 2, mok;
  mok = h - (aa + bb + cc);
  aa /= h, bb /= h, cc /= h, mok /= h;
  if (!mark[a - 1][b][c]) build(a - 1, b, c);
  if (!mark[a][b - 1][c]) build(a, b - 1, c);
  if (!mark[a][b][c - 1]) build(a, b, c - 1);
  double x = aa, y = bb, z = cc;
  x /= 1 - mok, y /= 1 - mok, z /= 1 - mok;
  dp[a][b][c][0] =
      x * dp[a][b - 1][c][0] + y * dp[a][b][c - 1][0] + z * dp[a - 1][b][c][0];
  dp[a][b][c][1] =
      x * dp[a][b - 1][c][1] + y * dp[a][b][c - 1][1] + z * dp[a - 1][b][c][1];
  dp[a][b][c][2] =
      x * dp[a][b - 1][c][2] + y * dp[a][b][c - 1][2] + z * dp[a - 1][b][c][2];
}
int32_t main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cout << setprecision(15) << fixed;
  long long int a, b, c;
  cin >> a >> b >> c;
  build(a, b, c);
  cout << dp[a][b][c][0] << " " << dp[a][b][c][1] << " " << dp[a][b][c][2];
  return 0;
}
