#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
template <typename T>
string to_str(T num) {
  stringstream stream;
  stream << num;
  return stream.str();
}
int to_int(string str) {
  int val;
  stringstream stream;
  stream << str;
  stream >> val;
  return val;
}
long long lcm(long long n1, long long n2) {
  long long m;
  m = n1 * n2 / gcd(n1, n2);
  return m;
}
void dream() {
  ios_base::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
}
bool plain(string o) {
  for (int i = 0; i < o.size() / 2; i++) {
    if (o.size() % 2 != 0 && i == o.size() / 2) continue;
    if (o[i] != o[o.size() - i - 1]) return 0;
  }
  return 1;
}
long long o = INT_MIN, k = 0, h, g, q, u, x, y, n, sum, sum2, cnt = 0, cnt2 = 0,
          t, z;
long long maxi = INT_MIN, mini = (long long)1e9, maxii = INT_MIN,
          minii = (long long)1e9, b, a, aa, bb, maz = INT_MIN;
long long arr[(long long)1e5 + 1];
int main() {
  cin >> x >> y;
  z = x - y + 1;
  if ((x == 0 && y > 1) || y == 0)
    puts("No");
  else if (y == 1 && x != 0)
    puts("No");
  else if (z % 2 == 0 && z >= 0)
    puts("Yes");
  else
    puts("No");
}
