#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* #include */ /* using namespace atcoder; */ using namespace std; void debug_out(){ cout << "\n"; } template void debug_out(Head H, Tail... T) { cout << H << " "; debug_out(T...); } #ifdef _DEBUG #define debug(...) debug_out(__VA_ARGS__) #else #define debug(...) #endif #define SPBR(w, n) std::cout<<(w + 1 == n ? '\n' : ' '); #define YES cout << "YES" << endl #define Yes cout << "Yes" << endl #define NO cout << "NO" << endl #define No cout << "No" << endl #define ALL(i) (i).begin(), (i).end() #define FOR(i, a, n) for(int i=(a);i<(n);++i) #define RFOR(i, a, n) for(int i=(n)-1;i>=(a);--i) #define REP(i, n) for(int i=0;i=0;--i) #define IN(a, x, b) (a<=x && x inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } #define int ll using ll = long long; using ull = unsigned long long; using ld = long double; const ll MOD = 1000000007; /* const ll MOD = 998244353; */ const ll INF = (1<<30)-1; const ll INFLL = 1ll<<60; const double PI = acos(-1); struct INIT { INIT(){ cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(10); }}INIT; signed main() { int A; cin >> A; bool ans = false; for(int n = 3; ; n++){ int now = n*(n-1)/2; if(now > A) break; int amari = A-now; if(amari == (amari/n)*n){ YES; return 0; } } NO; return 0; }