import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        Boolean[][] dp=new Boolean[101][101];
        boolean as = dfs(x,y,dp);
        System.out.println(as ? "Yes" : "No");
    }

    private static boolean dfs(int x, int y, Boolean[][] dp) {
        if(y < 0){
            return false;
        }
        if(x <= 0){
            return x == 0 && y == 0;
        }
        if(dp[x][y] != null) return dp[x][y];
        return dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp);
    }
} import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        Boolean[][] dp=new Boolean[101][101];
        boolean as = dfs(x,y,dp);
        System.out.println(as ? "Yes" : "No");
    }

    private static boolean dfs(int x, int y, Boolean[][] dp) {
        if(y < 0){
            return false;
        }
        if(x <= 0){
            return x == 0 && y == 0;
        }
        if(dp[x][y] != null) return dp[x][y];
        return dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp);
    }
} Main public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        Boolean[][] dp=new Boolean[101][101];
        boolean as = dfs(x,y,dp);
        System.out.println(as ? "Yes" : "No");
    } main {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        Boolean[][] dp=new Boolean[101][101];
        boolean as = dfs(x,y,dp);
        System.out.println(as ? "Yes" : "No");
    } Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int x = scan.nextInt(); x scan.nextInt() scan.nextInt scan int y = scan.nextInt(); y scan.nextInt() scan.nextInt scan Boolean[][] dp=new Boolean[101][101]; dp new Boolean[101][101] 101 101 boolean as = dfs(x,y,dp); as dfs(x,y,dp) dfs x y dp System.out.println(as ? "Yes" : "No") System.out.println System.out System System.out as ? "Yes" : "No" as "Yes" "No" String[] args args private static boolean dfs(int x, int y, Boolean[][] dp) {
        if(y < 0){
            return false;
        }
        if(x <= 0){
            return x == 0 && y == 0;
        }
        if(dp[x][y] != null) return dp[x][y];
        return dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp);
    } dfs {
        if(y < 0){
            return false;
        }
        if(x <= 0){
            return x == 0 && y == 0;
        }
        if(dp[x][y] != null) return dp[x][y];
        return dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp);
    } if(y < 0){
            return false;
        } y < 0 y 0 {
            return false;
        } return false; false if(x <= 0){
            return x == 0 && y == 0;
        } x <= 0 x 0 {
            return x == 0 && y == 0;
        } return x == 0 && y == 0; x == 0 && y == 0 x == 0 x 0 y == 0 y 0 if(dp[x][y] != null) return dp[x][y]; dp[x][y] != null dp[x][y] dp[x] dp x y null return dp[x][y]; dp[x][y] dp[x] dp x y return dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp); dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp) dp[x][y] dp[x] dp x y dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp) dfs(x-1,y-2,dp) dfs x-1 x 1 y-2 y 2 dp dfs(x-1,y-4,dp) dfs x-1 x 1 y-4 y 4 dp int x x int y y Boolean[][] dp dp public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        Boolean[][] dp=new Boolean[101][101];
        boolean as = dfs(x,y,dp);
        System.out.println(as ? "Yes" : "No");
    }

    private static boolean dfs(int x, int y, Boolean[][] dp) {
        if(y < 0){
            return false;
        }
        if(x <= 0){
            return x == 0 && y == 0;
        }
        if(dp[x][y] != null) return dp[x][y];
        return dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp);
    }
} public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        Boolean[][] dp=new Boolean[101][101];
        boolean as = dfs(x,y,dp);
        System.out.println(as ? "Yes" : "No");
    }

    private static boolean dfs(int x, int y, Boolean[][] dp) {
        if(y < 0){
            return false;
        }
        if(x <= 0){
            return x == 0 && y == 0;
        }
        if(dp[x][y] != null) return dp[x][y];
        return dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp);
    }
} Main
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();
        int y = scan.nextInt();
        Boolean[][] dp=new Boolean[101][101];
        boolean as = dfs(x,y,dp);
        System.out.println(as ? "Yes" : "No");
    }

    private static boolean dfs(int x, int y, Boolean[][] dp) {
        if(y < 0){
            return false;
        }
        if(x <= 0){
            return x == 0 && y == 0;
        }
        if(dp[x][y] != null) return dp[x][y];
        return dp[x][y] = dfs(x-1,y-2,dp) || dfs(x-1,y-4,dp);
    }
}
