#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(int)n;++i)
#define REP(i,a,b) for(int i=int(a);i<(int)b;++i)
#define irep(i,a,b) for(int i=int(a);i<(int)b;++i)
#define rrep(i,a,b) for(int i=int(a);i>=(int)b;--i)
#define vi vector<int>
#define vvi vector<vector<int>>
#define vl vector<ll>
#define vvl vector<vector<ll>>
#define vp vector<pair<ll,ll>>
#define pb push_back
#define all(v) v.begin(),v.end()


using namespace std;
using ll = long long;
const ll INF = 1e18;
const double PI = acos(-1);

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;
}

const ll mod = 1e9 + 7; //998244353;

ll modpow(ll a,ll b){
    if(b == 0){
        return 1;
    }
    if(b%2 == 0){
        ll tmp = modpow(a,b/2);
        return tmp*tmp%mod;
    }else{
        return modpow(a,b-1)*a%mod;
    }

}

struct UnionFind{
    vector<int> d;
    UnionFind(int n = 0) : d(n,-1){}
    int find(int x) {
        if(d[x] < 0)return x;
        return d[x] = find(d[x]);
    }
    bool unite(int x,int y){
        x = find(x);y = find(y);
        if(x == y)return false;
        if(d[x] > d[y])swap(x,y);
        d[x] += d[y];
        d[y] = x;
        return true;
    }

    bool same(int x,int y){
        return find(x) == find(y);
    }
    
    int size(int x){
        return -d[find(x)];
    }
    int operator[](int x){return find(x);}
    int operator()(int x){return size(x);}
};



double dp[105][105][105];

int main(void){
    std::cin.tie(nullptr);
    std::ios::sync_with_stdio(false);
    int a,b,c;
    cin >> a >> b >> c;
    dp[a][b][c] =1;
    irep(i,a,101){
        irep(j,b,101){
            irep(k,c,101){
                
                if(i-a > 0 && j != 100 && k != 100)dp[i][j][k] += (i-1)*dp[i-1][j][k]/(double)(i+j+k-1);
                if(j-b > 0 && i != 100 && k != 100) dp[i][j][k] += (j-1)*dp[i][j-1][k]/(double)(i+j+k-1);
                if(k-c > 0 && i != 100 && j != 100)dp[i][j][k] += (k-1)*dp[i][j][k-1]/(double)(i+j+k-1);
            }
        }
    }
    double ans = 0;
    irep(i,a,100){
        irep(j,b,100){
            double cnt = i-a + j-b+100-c;
            ans +=  cnt*dp[i][j][100];

        }
    }
    //cerr << ans << endl;
    irep(i,b,100){
        irep(j,c,100){
            double cnt = i-b + j-c+100-a;
            //cerr << cnt << endl;
            ans +=  cnt*dp[100][i][j];
        }
    }
    //cerr << ans << endl;
    irep(i,c,100){
        irep(j,a,100){
            double cnt = i-c + j-a+100-b;
            ans +=  cnt*dp[j][100][i];
            //cerr << ans << endl;

        }
    }
    //cerr << dp[a][b][c+1] << endl;

    cout << setprecision(10) << ans << endl;

    
    return 0;
    
}
#include<bits/stdc++.h>
#define int ll
#define sz(x) int((x).size())
#define all(x) (x).begin(),(x).end()
#define x first
#define y second
using namespace std;
using ll = long long;
using pi = pair<int,int>;
const int inf = 0x3f3f3f3f3f3f3f3f;
const int minf = 0xc0c0c0c0c0c0c0c0;



signed main() {
    ios::sync_with_stdio(0); cin.tie(0);

    int a,b,c; cin>>a>>b>>c;
    cout<<(a*a+b*b<c*c ? "Yes" : "No")<<'\n';

    return 0;
}