import java.util.*;
 
public class Main {
    
    //探索終了の条件
    static int X ;
    static int Y ;
    //探索する木
    static int a[] = {1,2,2,1,-1,-2,-2,-1};
    static int b[] = {2,1,-1,-2,-2,-1,1,2};
    
    	public static void main(String[] args) {
    	    Scanner sc  = new Scanner(System.in);
            X = Integer.parseInt(sc.next());
            Y = Integer.parseInt(sc.next());
        
            boolean ans = f(0,0,0);
        
            if(ans) System.out.print("YES");
            if(!ans)System.out.print("NO");
                System.out.println();
            }
            
        // p,q : 探索開始地点; depth : 探索回数
        static  boolean f (int p,int q,int depth){
            //System.out.println("p:"+p+" q:"+q);
            //目的の値に達する    
            if(p==X&&q==Y) return true;
            //s探索終了の条件
            if(depth==3)       return false;
            for(int i=0;i<8;i++)
            {
            //目的の値に達する
            if(f(p+a[i],q+b[i],depth+1)) return true;
            }
            //探索失敗
             return false;
        }
   
}