#include <bits/stdc++.h>
using namespace std;
long long power(long long _a, long long _b) {
  long long _r = 1;
  while (_b) {
    if (_b % 2 == 1) _r = (_r * _a);
    _b /= 2;
    _a = (_a * _a);
  }
  return _r;
}
long long add(long long a, long long b, long long m = 1000000007) {
  long long x = a + b;
  while (x >= m) x -= m;
  return x;
}
long long sub(long long a, long long b, long long m = 1000000007) {
  long long x = a - b;
  while (x < 0) x += m;
  return x;
}
long long mul(long long a, long long b, long long m = 1000000007) {
  long long x = a * b;
  x %= m;
  return x;
}
long long gcd(long long a, long long b) {
  while (a && b) a > b ? a %= b : b %= a;
  return a + b;
}
long long lcm(long long a, long long b) {
  return (max(a, b) / gcd(a, b)) * min(a, b);
}
int main() {
  ios_base::sync_with_stdio(false);
  long long n, x;
  cin >> n >> x;
  if (n == 1) {
    cout << "YES" << endl << x;
    return 0;
  } else if (n == 2) {
    if (x == 0) {
      cout << "NO";
      return 0;
    } else {
      cout << "YES" << endl << "0 " << x;
    }
  } else if (n == 3) {
    cout << "YES" << endl;
    long long b = power(2, 18), v = power(2, 17), opi = (b ^ v ^ x);
    cout << b << " " << v << " " << opi;
  } else {
    cout << "YES" << endl;
    long long o = 0, i;
    for (i = 1; i <= n - 3; i++) {
      cout << i << " ";
      o = o ^ i;
    }
    if (o != 0 && o != x) {
      long long k = power(2, 18);
      long long f = 0;
      long long q = k ^ x ^ o;
      cout << k << " " << f << " " << q;
    } else if (o == x && o != 0) {
      long long k = power(2, 18);
      long long f = power(2, 17);
      long long t = f ^ k;
      cout << k << " " << f << " " << t;
    } else {
      long long k = power(2, 18);
      long long f = power(2, 17);
      long long t = f ^ k ^ x;
      cout << k << " " << f << " " << t;
    }
  }
  return 0;
}
