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.math.BigInteger;
import java.util.*;
public class hhahah {
	public static void main(String[] args){
	    // i*(i+1)/2 + k*(k+1)/2 = n 
	    // brute force on one unknown 
		Scanner sc = new Scanner(System.in);
		int n= sc.nextInt(); boolean f =false ;
		for(int i=1; i<=44722;i++){
			int x =2*n- i*(i+1);
			int k = (int) Math.sqrt(x);
			if(k*(k+1)/2 + i*(i+1)/2 ==n && k>0){
				f=true ; 
				break ;
				
			}
			
			
			
		}
		
		
		
		
		
			
		System.out.println(f?"Yes":"No");
	
		
		
		
		
		
		
		
		
		
		
		
		
	}
	
	

	public static boolean ispalin(String x){
		if(x.length()==0 || x.length()==1)
			return true ;
		if(x.charAt(0)!=x.charAt(x.length()-1))
			return false ; 
		return ispalin(x.substring(1, x.length()-1)); 
		
		
		
		
		
		
	}
	
	
	
	
	
	
	
	
	
	
	
	

}