#include <iostream>

using namespace std;
int main()
{
  int a,b,c,result;
  cin>>a >>b>>c;
  if((a*a)+(b*b) < (c*c))
     cout<<"Yes"<<endl;
  else
        cout<<"No"<<endl;
}
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<stdio.h>
#include<set>
#include<queue>
#include<stack>
#include<cstring>
#include <numeric>
#include <unordered_map>
#include <unordered_set>
#include <sstream>

//#include<bits/stdc++.h>
#define FILE_NAME "A"
#define mp make_pair
#define SZ(x) (int)x.size()
#define pb push_back

#define fi first
#define se second
#define watch(x) cout << (#x) << " is " << (x) << endl
#define whole(x) x.begin(), x.end()
#define in insert


using namespace std;

typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef pair<int, int> pii;

const ll maxn = (2e5) + 11;
const int MOD = (1e9) + 7;
const ll  INF = (1e10) + 777;
const ld pi = 2 * acos(0.0);
const ll E9 = 1e9;
const ll E8 = 1e8;
const ll E7 = 1e7;
const ll E6 = 1e6;
const ll E5 = 1e5;
const ll E4 = 1e4;
const ll E3 = 1e3;

ll  toup(ll n,int div){
        return n%div==0?(n/div):((n+(div-n%div))/div);
}

ll n,sum=0,er,er2,m,ans=0,a[maxn],cnt=0,pref[maxn],l,r;

string s,t;
//map<ll,int>mm;
vector<ll>v;

//vector<ll>v;
//vector<pair<ll,ll>>vp;
//vector<pair<int,int>>g[50000];

void solve() {
        ll k;
        cin>>n>>m>>k;
        cout<<(n*n+m*m<k*k?"Yes":"No");
}


int main(){
        int test=1;
//        cin>>test;
        while(test--){
                solve();
//                nosolve();
        }

}