import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		int  wt = sc.nextInt();
		int sum = sc.nextInt();
		int weight[] = {2, 4};
		int value[] = {1, 1};
		boolean ans = knapsack(weight, value, wt, sum, 2);
      if(ans)
		System.out.println("Yes");
      else
        System.out.println("No");



	}
	public static boolean knapsack(int weight[], int value[], int wt, int sum, int n) {
		if (n == 0) {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} else if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false;

		boolean ans = knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1);
		return ans;

	}
}





class FastReader {
	BufferedReader br;
	StringTokenizer st;

	public FastReader() {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	}

	String next() {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(next());
	}

	long nextLong() {
		return Long.parseLong(next());
	}

	double nextDouble() {
		return Double.parseDouble(next());
	}

	String nextLine() {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.io.PrintWriter; PrintWriter java.io import java.util.*; util.* java public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		int  wt = sc.nextInt();
		int sum = sc.nextInt();
		int weight[] = {2, 4};
		int value[] = {1, 1};
		boolean ans = knapsack(weight, value, wt, sum, 2);
      if(ans)
		System.out.println("Yes");
      else
        System.out.println("No");



	}
	public static boolean knapsack(int weight[], int value[], int wt, int sum, int n) {
		if (n == 0) {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} else if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false;

		boolean ans = knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1);
		return ans;

	}
} Main public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		int  wt = sc.nextInt();
		int sum = sc.nextInt();
		int weight[] = {2, 4};
		int value[] = {1, 1};
		boolean ans = knapsack(weight, value, wt, sum, 2);
      if(ans)
		System.out.println("Yes");
      else
        System.out.println("No");



	} main {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		int  wt = sc.nextInt();
		int sum = sc.nextInt();
		int weight[] = {2, 4};
		int value[] = {1, 1};
		boolean ans = knapsack(weight, value, wt, sum, 2);
      if(ans)
		System.out.println("Yes");
      else
        System.out.println("No");



	} FastReader sc = new FastReader(); sc new FastReader() PrintWriter pw = new PrintWriter(System.out); pw new PrintWriter(System.out) int  wt = sc.nextInt(); wt sc.nextInt() sc.nextInt sc int sum = sc.nextInt(); sum sc.nextInt() sc.nextInt sc int weight[] = {2, 4}; weight {2, 4} 2 4 int value[] = {1, 1}; value {1, 1} 1 1 boolean ans = knapsack(weight, value, wt, sum, 2); ans knapsack(weight, value, wt, sum, 2) knapsack weight value wt sum 2 if(ans)
		System.out.println("Yes");
      else
        System.out.println("No"); ans System.out.println("Yes") System.out.println System.out System System.out "Yes" System.out.println("No") System.out.println System.out System System.out "No" String[] args args public static boolean knapsack(int weight[], int value[], int wt, int sum, int n) {
		if (n == 0) {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} else if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false;

		boolean ans = knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1);
		return ans;

	} knapsack {
		if (n == 0) {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} else if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false;

		boolean ans = knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1);
		return ans;

	} if (n == 0) {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} else if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false; n == 0 n 0 {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} if (sum == 0 && wt == 0) {
				return true;
			} sum == 0 && wt == 0 sum == 0 sum 0 wt == 0 wt 0 {
				return true;
			} return true; true return false; false if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false; sum == 0 && wt == 0 sum == 0 sum 0 wt == 0 wt 0 {
			return true;
		} return true; true if (sum < 0 || wt < 0)
			return false; sum < 0 || wt < 0 sum < 0 sum 0 wt < 0 wt 0 return false; false boolean ans = knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1); ans knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1) knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1) knapsack(weight, value, wt - 1, sum - weight[n - 1], n) knapsack weight value wt - 1 wt 1 sum - weight[n - 1] sum weight[n - 1] weight n - 1 n 1 n knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) knapsack weight value wt - 1 wt 1 sum - weight[n - 1] sum weight[n - 1] weight n - 1 n 1 n - 1 n 1 knapsack(weight, value, wt, sum, n - 1) knapsack weight value wt sum n - 1 n 1 return ans; ans int weight[] weight int value[] value int wt wt int sum sum int n n class FastReader {
	BufferedReader br;
	StringTokenizer st;

	public FastReader() {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	}

	String next() {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(next());
	}

	long nextLong() {
		return Long.parseLong(next());
	}

	double nextDouble() {
		return Double.parseDouble(next());
	}

	String nextLine() {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}
} FastReader BufferedReader br; br StringTokenizer st; st public FastReader() {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	} FastReader {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	} br = new BufferedReader(new
		                        InputStreamReader(System.in)) br new BufferedReader(new
		                        InputStreamReader(System.in)) String next() {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	} next {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	} while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		} st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		} try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			} catch (IOException  e) {
				e.printStackTrace();
			} IOException  e {
				e.printStackTrace();
			} e.printStackTrace() e.printStackTrace e {
				st = new StringTokenizer(br.readLine());
			} st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() {
		return Integer.parseInt(next());
	} nextInt {
		return Integer.parseInt(next());
	} return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() {
		return Long.parseLong(next());
	} nextLong {
		return Long.parseLong(next());
	} return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() {
		return Double.parseDouble(next());
	} nextDouble {
		return Double.parseDouble(next());
	} return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	} nextLine {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	} String str = ""; str "" try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} IOException e {
			e.printStackTrace();
		} e.printStackTrace() e.printStackTrace e {
			str = br.readLine();
		} str = br.readLine() str br.readLine() br.readLine br return str; str public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		int  wt = sc.nextInt();
		int sum = sc.nextInt();
		int weight[] = {2, 4};
		int value[] = {1, 1};
		boolean ans = knapsack(weight, value, wt, sum, 2);
      if(ans)
		System.out.println("Yes");
      else
        System.out.println("No");



	}
	public static boolean knapsack(int weight[], int value[], int wt, int sum, int n) {
		if (n == 0) {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} else if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false;

		boolean ans = knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1);
		return ans;

	}
} public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		int  wt = sc.nextInt();
		int sum = sc.nextInt();
		int weight[] = {2, 4};
		int value[] = {1, 1};
		boolean ans = knapsack(weight, value, wt, sum, 2);
      if(ans)
		System.out.println("Yes");
      else
        System.out.println("No");



	}
	public static boolean knapsack(int weight[], int value[], int wt, int sum, int n) {
		if (n == 0) {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} else if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false;

		boolean ans = knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1);
		return ans;

	}
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		int  wt = sc.nextInt();
		int sum = sc.nextInt();
		int weight[] = {2, 4};
		int value[] = {1, 1};
		boolean ans = knapsack(weight, value, wt, sum, 2);
      if(ans)
		System.out.println("Yes");
      else
        System.out.println("No");



	}
	public static boolean knapsack(int weight[], int value[], int wt, int sum, int n) {
		if (n == 0) {
			if (sum == 0 && wt == 0) {
				return true;
			}
			return false;
		} else if (sum == 0 && wt == 0) {
			return true;
		}

		else if (sum < 0 || wt < 0)
			return false;

		boolean ans = knapsack(weight, value, wt - 1, sum - weight[n - 1], n) || knapsack(weight, value, wt - 1, sum - weight[n - 1], n - 1) || knapsack(weight, value, wt, sum, n - 1);
		return ans;

	}
}





class FastReader {
	BufferedReader br;
	StringTokenizer st;

	public FastReader() {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	}

	String next() {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(next());
	}

	long nextLong() {
		return Long.parseLong(next());
	}

	double nextDouble() {
		return Double.parseDouble(next());
	}

	String nextLine() {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}
}