Given two integers **N** and **M**, the task is to check if it is possible to obtain these values from **X = 1** and **Y = 0** respectively by performing the two operations any number of times::

- Increase X and Y by 1, if and only if x>0.
- Increase Y by 2, if and only if y>0.

**Examples:**

Input:N = 3, M = 4Output:YesExplanation:

Initially X = 1, Y = 0

Operation 1: X = 2, Y = 1

Operation 1: X = 3, Y = 2

Operation 2: X = 3, Y = 4, hence the final values are got so the answer is Yes.

Input:N = 5, M = 2Output:NoExplanation :

Obtaining X = 5 and Y = 2 from X = 1 and Y = 0 is not possible.

**Approach:** The above problem can be solved using the below observations:

- If
**N is less than 2**and**M is not equal to zero**, then getting the final values is not possible, hence the answer is**No**. - Otherwise,
**subtract**N from M and if**M ? 0**and**M is divisible by 2**then the answer is**Yes**. - In all other cases, the answer is
**No**.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function that find given x and y` `// is possible or not` `bool` `is_possible(` `int` `x, ` `int` `y)` `{` ` ` `// Check if x is less than 2 and` ` ` `// y is not equal to 0` ` ` `if` `(x < 2 && y != 0)` ` ` `return` `false` `;` ` ` `// Perform subtraction` ` ` `y = y - x + 1;` ` ` `// Check if y is divisible by 2` ` ` `// and greater than equal to 0` ` ` `if` `(y % 2 == 0 && y >= 0)` ` ` `return` `true` `;` ` ` `else` ` ` `return` `false` `;` `}` `// Driver Code` `int` `main()` `{` ` ` `// Given X and Y` ` ` `int` `x = 5, y = 2;` ` ` `// Function Call` ` ` `if` `(is_possible(x, y))` ` ` `cout << ` `"Yes"` `;` ` ` `else` ` ` `cout << ` `"No"` `;` ` ` `return` `0;` `}` |

## Java

`// Java program for the above approach` `class` `GFG{` ` ` `// Function that find given x and y` `// is possible or not` `static` `boolean` `is_possible(` `int` `x, ` `int` `y)` `{` ` ` `// Check if x is less than 2 and` ` ` `// y is not equal to 0` ` ` `if` `(x < ` `2` `&& y != ` `0` `)` ` ` `return` `false` `;` ` ` ` ` `// Perform subtraction` ` ` `y = y - x + ` `1` `;` ` ` ` ` `// Check if y is divisible by 2` ` ` `// and greater than equal to 0` ` ` `if` `(y % ` `2` `== ` `0` `&& y >= ` `0` `)` ` ` `return` `true` `;` ` ` ` ` `else` ` ` `return` `false` `;` `}` ` ` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `// Given X and Y` ` ` `int` `x = ` `5` `, y = ` `2` `;` ` ` ` ` `// Function Call` ` ` `if` `(is_possible(x, y))` ` ` `System.out.println(` `"Yes"` `);` ` ` `else` ` ` `System.out.println(` `"No"` `);` `}` `}` `// This code is contributed by rock_cool` |

## Python3

`# Python3 program for the above approach` `# Function that find given x and y` `# is possible or not` `def` `is_possible(x, y):` ` ` ` ` `# Check if x is less than 2 and` ` ` `# y is not equal to 0` ` ` `if` `(x < ` `2` `and` `y !` `=` `0` `):` ` ` `return` `false` ` ` `# Perform subtraction` ` ` `y ` `=` `y ` `-` `x ` `+` `1` ` ` `# Check if y is divisible by 2` ` ` `# and greater than equal to 0` ` ` `if` `(y ` `%` `2` `=` `=` `0` `and` `y >` `=` `0` `):` ` ` `return` `True` ` ` `else` `:` ` ` `return` `False` `# Driver Code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` ` ` `# Given X and Y` ` ` `x ` `=` `5` ` ` `y ` `=` `2` ` ` `# Function Call` ` ` `if` `(is_possible(x, y)):` ` ` `print` `(` `"Yes"` `)` ` ` `else` `:` ` ` `print` `(` `"No"` `)` `# This code is contributed by Mohit Kumar` |

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` ` ` `// Function that find given x and y` `// is possible or not` `static` `bool` `is_possible(` `int` `x, ` `int` `y)` `{` ` ` `// Check if x is less than 2 and` ` ` `// y is not equal to 0` ` ` `if` `(x < 2 && y != 0)` ` ` `return` `false` `;` ` ` ` ` `// Perform subtraction` ` ` `y = y - x + 1;` ` ` ` ` `// Check if y is divisible by 2` ` ` `// and greater than equal to 0` ` ` `if` `(y % 2 == 0 && y >= 0)` ` ` `return` `true` `;` ` ` ` ` `else` ` ` `return` `false` `;` `}` ` ` `// Driver Code` `public` `static` `void` `Main(` `string` `[] args)` `{` ` ` `// Given X and Y` ` ` `int` `x = 5, y = 2;` ` ` ` ` `// Function Call` ` ` `if` `(is_possible(x, y))` ` ` `Console.Write(` `"Yes"` `);` ` ` `else` ` ` `Console.Write(` `"No"` `);` `}` `}` `// This code is contributed by Ritik Bansal` |

## Javascript

`<script>` `// Javascript program for the above approach` `// Function that find given x and y` `// is possible or not` `function` `is_possible(x, y)` `{` ` ` ` ` `// Check if x is less than 2 and` ` ` `// y is not equal to 0` ` ` `if` `(x < 2 && y != 0)` ` ` `return` `false` `;` ` ` `// Perform subtraction` ` ` `y = y - x + 1;` ` ` `// Check if y is divisible by 2` ` ` `// and greater than equal to 0` ` ` `if` `(y % 2 == 0 && y >= 0)` ` ` `return` `true` `;` ` ` `else` ` ` `return` `false` `;` `}` `// Driver code` `// Given X and Y` `let x = 5, y = 2;` `// Function Call` `if` `(is_possible(x, y))` ` ` `document.write(` `"Yes"` `);` `else` ` ` `document.write(` `"No"` `);` ` ` `// This code is contributed by divyesh072019 ` ` ` `</script>` |

**Output:**

No

**Time Complexity:**** **O(1)**Auxiliary Space: ***O(1)*

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**