#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define EVAL 1 using namespace std; #define Ma_PI 3.141592653589793 #define eps 0.00000001 #define LONG_INF 3000000000000000000 #define GOLD 1.61803398874989484820458 #define MAX_MOD 1000000007 #define REP(i,n) for(long long i = 0;i < n;++i) #define seg_size 524288 #define PI 3.1415926535 using namespace std; long long n; long long solve(long long now){ if(n > now*(now+1LL)) return 0; return 1; } int main(){ cin >> n; n *= 2LL; long long top = sqrt(800000000000000000LL) + 1LL; long long bot = 0LL; while(top - bot > 1LL){ long long mid=(top+bot)/2LL; if(solve(mid) == 0LL){ bot = mid; }else top = mid; } if(top*(top+1LL) == n){ cout << "YES" << endl; cout << top << endl; }else if(bot * (bot+1LL) == n){ cout << "YES" << endl; cout << bot << endl; }else cout << "NO" << endl; }