// Username: WillTheBill
// Time of creation: 2020-11-22 13:51
// Original filename: m.cp.cpp

#include<bits/stdc++.h>
using namespace std;

// shortcuts
#define pb push_back
#define fi first
#define se second
#define all(_v) _v.begin(),_v.end()
#define ll long long

// IO
#define multitest signed __T; cin >> __T; while(__T--)
template<typename T>
void _read(T& t);
template<typename T>
void _read(vector<T>&v);
template<typename T1, typename T2>
void _read(pair<T1,T2>&p);
template<typename T>
void _read(T& t){cin >> t;}
template<typename T>
void _read(vector<T>&v){for(unsigned _i=0;_i<v.size();_i++)_read(v[_i]);}
template<typename T1, typename T2>
void _read(pair<T1,T2>&p){_read(p.first);_read(p.second);}
void _masterread(){}
template<typename T,typename... V>
void _masterread(T& t, V&... v){_read(t);_masterread(v...);}
#define re(...)_masterread(__VA_ARGS__)

template<typename T>
void _print(T t);
template<typename T>
void _print(vector<T>&v);
template<typename T1, typename T2>
void _print(pair<T1,T2>&p);
template<typename T>
void _print(T t){cout<<t;}
template<typename T>
void _print(vector<T>&v){for(unsigned _i=0;_i<v.size();_i++)_print(v[_i]),cout<<(_i==v.size()-1?"":" ");}
template<typename T1, typename T2>
void _print(pair<T1,T2>&p){_print(p.first);cout<<" ";_print(p.second);}
void _masterprint(){cout<<endl;}
template<typename T,typename... V>
void _masterprint(T t, V... v){_print(t);if(sizeof...(v))cout<<" ";_masterprint(v...);}
#define pr(...)_masterprint(__VA_ARGS__)

// DEBUG
// colored output???
template <typename T> // start forward declaration
void _debug(T t);
template<typename T1,typename T2>
void _debug(pair<T1,T2> p);
template<typename T>
void _debug(vector<T>v);
template <typename T> // end forward declaration
void _debug(T t){cerr<<t;}
template<typename T1,typename T2>
void _debug(pair<T1,T2> p){cerr<<"{";_debug(p.first);cerr<<", ";_debug(p.second);cerr<<"}";}
template<typename T>
void _debug(vector<T>v){cerr<<"(";for(unsigned _i=0;_i<v.size();_i++)_debug(v[_i]),cerr<<(_i==v.size()-1?"":", ");cerr << ")";}
void _masterdebug(){cerr<<"]\n";}
template<typename T,typename... V>
void _masterdebug(T t,V... v){_debug(t);if(sizeof...(v))cerr<<", ";_masterdebug(v...);}
#ifdef __local__
#define debug(...) cerr<<"["<<#__VA_ARGS__<<"] = [";_masterdebug(__VA_ARGS__)
#else
#define debug(...) 
#endif

// TYPES
// #define int long long

signed main(){
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    vector<vector<vector<double>>> dp (101, vector<vector<double>> (101, vector<double> (101, 0.0)));
	int A,B,C; re(A,B,C);
	dp[A][B][C] = 1.0;
	double sum = 0;
	double propsum = 0;
	for(int i = 0; i <= 100; i++){
		for(int j = 0; j <= 100; j++){
			for(int k = 0; k <= 100; k++){
				if(i == A && j == B && k == C) continue;
				int s = i + j + k;
				if(s <= 1) continue;
				if((i == 100 && j == 100) || (i == 100 && k == 100) || (j == 100 && k == 100)) continue;
				if(i > 0 && j != 100 && k != 100) dp[i][j][k] += dp[i-1][j][k] * (i-1) / ((double)(s-1));
				if(j > 0 && i != 100 && k != 100) dp[i][j][k] += dp[i][j-1][k] * (j-1) / ((double)(s-1));
				if(k > 0 && i != 100 && j != 100) dp[i][j][k] += dp[i][j][k-1] * (k-1) / ((double)(s-1));
				if(dp[i][j][k] < 0){
					debug(i,j,k);
				}
				if(i == 100 || j == 100 || k == 100){
					int amount = i - A + j - B + k - C;
					if(amount < 0) continue;
					debug(dp[i][j][k], i, j, k, amount);
					sum += amount * dp[i][j][k];
					propsum += dp[i][j][k];
				}
			}
		}
	}
	debug(dp[99][99][99]);
	debug(sum, propsum);
	cout << setprecision(10) << fixed;
	pr(sum / propsum);
}

#include <bits/stdc++.h>
using namespace std;
typedef long double ld;
typedef long long ll;
using P = pair<int,int>;
const char EOLN = '\n';
#define rep(i,n) for (int i = 0; i < (n); ++i)
#define int long long
// DP
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }

// 定数
#define INF32 2147483647 //2.147483647×10^{9}:32bit整数のinf
#define INF64 9223372036854775807 //9.223372036854775807×10^{18}:64bit整数のinf
#define MOD 1000000007 //問題による
const double pi = 3.14159265359;

// メモ
// vector二次元配列
// vector<vector<ll>> cnt(h,vector<ll> (w));
// bit演算
// for (int bit = 0; bit < (1<<k); ++bit)
// bit & (1 << i)
// 複数変数をいっきに代入
// tie(a,b,c) = make_tuple(10, 7.7, "hello");

//大きい配列はglobalで宣言しておいた方が良い
//3次元はvectorだと面倒だから配列で。
const int x=100;
double dp[x+1][x+1][x+1];

signed main()
{
    int a,b,c;
    cin >> a >> b >> c;
    for(int i=x-1; i>=0; --i){
        for(int j=x-1; j>=0; --j){
            for(int k=x-1; k>=0; --k){
                if(i+j+k == 0) continue;
                double now = 0;
                now += dp[i+1][j][k]*i;
                now += dp[i][j+1][k]*j;
                now += dp[i][j][k+1]*k;
                dp[i][j][k] = now/(i+k+j) + 1;
            }
        }
    }
    double ans = dp[a][b][c];
    //少数の出力はprintfで指定するのが良い
    printf("%.10f\n",ans);
    
    return 0;
}