#include //#include using namespace std; //using namespace atcoder; using ll = long long; using Graph = vector>; #define rep(i,m,n) for(int (i)=(m);(i)<(n);++(i)) #define rrep(i,m,n) for(int (i)=(n)-1;(i)>=(m);--(i)) #define all(x) (x).begin(),(x).end() #define out(y,x,h,w) (y)<0||(x)<0||(y)>=(h)||(x)>=(w) constexpr ll INF = (ll)1e9; constexpr ll mod = 998244353; constexpr double PI = 3.1415926535897932; templateinline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } templateinline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } inline void init() { cin.tie(nullptr); cout.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(15); } int main() { init(); int A; cin >> A; bool ans = false; rep(i, 3, 100000) { ll x = 2 * A - (ll)i * (i - 1); if (x % (2 * i) == 0)ans = true; } if (ans)cout << "YES" << "\n"; else cout << "NO" << "\n"; return 0; }