#include <bits/stdc++.h>
using namespace std;
double a[105][105][105];
double b[105][105][105];
int vis[105][105][105];
void runn(int x, int y, int z) {
  if (vis[x][y][z]) return;
  if (vis[y][z][x]) {
    a[x][y][z] = b[y][z][x];
    b[x][y][z] = 1 - a[y][z][x] - b[y][z][x];
    vis[x][y][z] = 1;
    return;
  }
  if (vis[z][x][y]) {
    a[x][y][z] = 1 - a[z][x][y] - b[z][x][y];
    b[x][y][z] = a[z][x][y];
    vis[x][y][z] = 1;
    return;
  }
  if (x > 0) runn(x - 1, y, z);
  if (y > 0) runn(x, y - 1, z);
  if (z > 0) runn(x, y, z - 1);
  if (x + y == 0) {
    a[x][y][z] = 0;
    b[x][y][z] = 0;
    vis[x][y][z] = 1;
    return;
  }
  if (y + z == 0) {
    a[x][y][z] = 0;
    b[x][y][z] = 1;
    vis[x][y][z] = 1;
    return;
  }
  if (x + z == 0) {
    a[x][y][z] = 1;
    b[x][y][z] = 0;
    vis[x][y][z] = 1;
    return;
  }
  a[x][y][z] = a[x - 1][y][z] * (double)z * x / (x * y + y * z + z * x) +
               a[x][y - 1][z] * (double)x * y / (x * y + y * z + z * x) +
               a[x][y][z - 1] * (double)y * z / (x * y + y * z + z * x);
  b[x][y][z] = b[x - 1][y][z] * (double)z * x / (x * y + y * z + z * x) +
               b[x][y - 1][z] * (double)x * y / (x * y + y * z + z * x) +
               b[x][y][z - 1] * (double)y * z / (x * y + y * z + z * x);
  vis[x][y][z] = 1;
}
int main(void) {
  int x, y, z;
  cin >> x >> y >> z;
  runn(x, y, z);
  cout << setprecision(12) << b[x][y][z] << ' ' << a[x][y][z] << ' '
       << (1 - a[x][y][z] - b[x][y][z]);
  return 0;
}
