Problem: As you very well know, this year's funkiest numbers are so called triangular numbers (that is, integers that are representable as <image>, 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

256


Output

YES


Input

512


Output

NO

Note

In the first sample number <image>.

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

Solution (in JAVA):

Solution:
import java.util.Scanner;

public class Funky_num {
	public static String is_num(int n) {
		
		if( n== 1 || n == 5 || n==10 || n==15) {
			return "NO";
		
		}else if( n== 2 || n == 6 || n==4) {
			return "YES";
		}
		else if(n >= 7) {
			//define f(x) ((x*(x+1))/2)
			
			  //long n=0; 
			  long  x=0, y=0;
			  long formula_x;
			  long formula_y;
			 
			  for(x=0; x<=Math.sqrt(n); x++){
			  	formula_x= (x*(x+1))/2;
			    y = (long)(Math.sqrt((n-formula_x)*2));
			    formula_y= (y*(y+1))/2;
			    if(formula_y+ formula_x ==n){
			    	return "YES";
			    }
			  }
			  return "NO";
		}
		return "NO";
	}
		
		
		
	
	  public static void main(String args[]){
	        Scanner res = new Scanner(System.in);

	        int x = res.nextInt();
	        
	        System.out.println(is_num(x));
	        res.close();


	    }
}