Problem:
Score : 200 points

Problem Statement

There are some animals in a garden. Each of them is a crane with two legs or a turtle with four legs.

Takahashi says: "there are X animals in total in the garden, and they have Y legs in total." Determine whether there is a combination of numbers of cranes and turtles in which this statement is correct.

Constraints

1 \leq X \leq 100

1 \leq Y \leq 100

All values in input are integers.

Input

Input is given from Standard Input in the following format:

X Y

Output

If there is a combination of numbers of cranes and turtles in which the statement is correct, print Yes; otherwise, print No.

Sample Input 1

3 8

Sample Output 1

Yes

The statement "there are 3 animals in total in the garden, and they have 8 legs in total" is correct if there are two cranes and one turtle. Thus, there is a combination of numbers of cranes and turtles in which the statement is correct.

Sample Input 2

2 100

Sample Output 2

No

There is no combination of numbers of cranes and turtles in which this statement is correct.

Sample Input 3

1 2

Sample Output 3

Yes

We also consider the case in which there are only cranes or only turtles.

Solution in Java (OpenJDK 11.0.6) (judge verdict: Accepted)

import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;
 
// Solution
public class Main {
  private static Scanner in;
  private static PrintWriter out;
  private static final String INPUT = ""; // input file name
 
  /**
   * Interactive get next command
   */
  static int get(int pos) {
    out.println(pos + 1);
    out.flush();
    return ni();
  }
 
  static void solve() {
    int x = ni();
    int y = ni();
    
    int f = (y / 2) - x;
    int t = x - f ;
    
    if (y % 2 != 0 || f < 0 || t < 0) {
      out.println("No");
    } else {
    	out.println("Yes");
    }
  }
 
  public static void main(String[] args) throws Exception {
    long S = System.currentTimeMillis();
    in = INPUT.isEmpty() ? new Scanner(System.in) : new Scanner(INPUT);
    out = new PrintWriter(System.out);
 
    solve();
    out.flush();
    long G = System.currentTimeMillis();
    tr(G - S + "ms");
  }
 
  private static int ni() {
    return Integer.parseInt(in.next());
  }
 
  private static long nl() {
    return Long.parseLong(in.next());
  }
 
  // Math Utils
  private static int pi(int num, int pow) {
    int result = 1;
 
    while (pow > 0) {
      if (pow % 2 == 1) {
        result *= num;
      }
 
      num *= num;
      pow /= 2;
    }
 
    return result;
  }
 
  private static int pim(int num, int pow, int mod) {
    int result = 1;
 
    while (pow > 0) {
      if (pow % 2 == 1) {
        // keep collecting `odd` num in result
        result = (result * num) % mod;
      }
 
      num = (num * num) % mod;
      pow /= 2;
    }
 
    return result;
  }
 
  private static long pl(long num, long pow) {
    long result = 1;
 
    while (pow > 0) {
      if (pow % 2 == 1) {
        result *= num;
      }
 
      num *= num;
      pow /= 2;
    }
 
    return result;
  }
 
  private static long plm(long num, long pow, long mod) {
    long result = 1;
 
    while (pow > 0) {
      if (pow % 2 == 1) {
        // keep collecting `odd` num in result
        result = (result * num) % mod;
      }
 
      num = (num * num) % mod;
      pow /= 2;
    }
 
    return result;
  }
 
  static void tr(Object... o) {
    if (!INPUT.isEmpty())
      out.println(Arrays.deepToString(o));
  }
}