#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f
#define swap(a, b) (a ^= b ^= a ^= b)
#define max(x,y) ((x)>(y)?(x):(y))
// #define min(x,y) ((x)<(y)?(x):(y))
#define endl '\n'
const int maxn = 1e6 + 5;
inline int pow(int a, int b, int mod) { int ans = 1;while (b) { if (b & 1)        ans = ans * a % mod;    a = a * a % mod;    b >>= 1; }    return ans % mod; }
inline void print(double x, int d) { cout << fixed << setprecision(d) << x; }
inline int read() { int x = 0, s = 1;   char c = cin.get();   while (c < 48 || c > 57) { if (c == '-')            s = -1;        c = cin.get(); }   while (c <= 57 && c >= 48) { x = (x << 1) + (x << 3) + c - '0';       c = cin.get(); }    return x * s; }
int a[maxn];
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int a, b, c;cin >> a >> b >> c;
    cout << a + b + c - min({ a,b,c });
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define endl '\n'
#define all(x) (x).begin(),(x).end()
#define mp(x,y) make_pair(x,y)
const int INF=1000000000+5;
const int N=100+5;
const ll oo=1e18+5;
const ll mod=1e9+7;

double dp[N][N][N];

double solve(int a,int b,int c){
	if(a>=100||b>=100||c>=100) return 0;
	double& ans=dp[a][b][c];
	if(ans>=0) return ans;
	double sum=a+b+c;
	ans=1+a/sum*solve(a+1,b,c)+b/sum*solve(a,b+1,c)+c/sum*solve(a,b,c+1);
	return ans;
}

int main(){
	ios::sync_with_stdio(0); cin.tie(0);
	int a,b,c;
	cin>>a>>b>>c;
	for(int i=0;i<N;++i){
		for(int j=0;j<N;++j){
			for(int d=0;d<N;++d) dp[i][j][d]=-1;
		}
	}
	cout<<fixed<<setprecision(9)<<solve(a,b,c);
	return 0;	
}
