## Algorithm

A. Funky Numbers
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

As you very well know, this year's funkiest numbers are so called triangular numbers (that is, integers that are representable as , where k is some positive integer), and the coolest numbers are those that are representable as a sum of two triangular numbers.

A well-known hipster Andrew adores everything funky and cool but unfortunately, he isn't good at maths. Given number n, help him define whether this number can be represented by a sum of two triangular numbers (not necessarily different)!

Input

The first input line contains an integer n (1 ≤ n ≤ 109).

Output

Print "YES" (without the quotes), if n can be represented as a sum of two triangular numbers, otherwise print "NO" (without the quotes).

Examples
input
Copy
`256`
output
Copy
`YES`
input
Copy
`512`
output
Copy
`NO`
Note

In the first sample number .

In the second sample number 512 can not be represented as a sum of two triangular numbers.

## Code Examples

### #1 Code Example with C++ Programming

```Code - C++ Programming```

``````#include <bits/stdc++.h>

using namespace std;

int const N = 1e5 + 1;
int n;
set<long long> st;

int main() {
scanf("%d", &n);

for(int i = 1; i < N; ++i)
st.insert(1ll * i * (i + 1) / 2);

for(set<long long>::iterator it = st.begin(); it != st.end(); ++it) {
if(n - (*it)> 0 && st.count(n - (*it))) {
puts("YES");
return 0;
}
}

puts("NO");

return 0;
}``````
Copy The Code &

Input

cmd
256

Output

cmd
YES