#include <bits/stdc++.h>
using namespace std;
const long long int INF = 1e18;
const int mod = 1000000007;
int main() {
  long long int t, n, m, i, j, k, l, x, y, z;
  scanf("%lld %lld", &n, &x);
  vector<long long int> V;
  if (n % 4 == 1) {
    V.push_back(x);
    k = 1;
    for (i = 0; i < (4 * (x / 4)) && k < n; ++i) {
      V.push_back(i);
      k++;
    }
    for (i = 4 * ((x / 4) + 1); k < n; ++i) {
      V.push_back(i);
      k++;
    }
    puts("YES");
    for (i = 0; i < V.size(); ++i) printf("%lld ", V[i]);
  } else if (n % 4 == 2) {
    if (n == 2 && x == 0)
      puts("NO");
    else {
      if (x != 0) {
        V.push_back(131072);
        V.push_back(x ^ 131072);
        k = 2;
      } else {
        V.push_back(131072);
        V.push_back(262144);
        V.push_back(393216);
        V.push_back(131073);
        V.push_back(262146);
        V.push_back(393219);
        k = 6;
      }
      for (i = 4; i < (4 * (x / 4)) && k < n; ++i) {
        V.push_back(i);
        k++;
      }
      for (i = 4 * ((x / 4) + 1); k < n; ++i) {
        V.push_back(i);
        k++;
      }
      puts("YES");
      for (i = 0; i < V.size(); ++i) printf("%lld ", V[i]);
    }
  } else if (n % 4 == 3) {
    V.push_back(262144);
    V.push_back(131072);
    V.push_back(x ^ 393216);
    k = 3;
    for (i = 4; i < (4 * (x / 4)) && k < n; ++i) {
      V.push_back(i);
      k++;
    }
    for (i = 4 * ((x / 4) + 1); k < n; ++i) {
      V.push_back(i);
      k++;
    }
    puts("YES");
    for (i = 0; i < V.size(); ++i) printf("%lld ", V[i]);
  } else {
    V.push_back(131072);
    V.push_back(262144);
    V.push_back(393216);
    V.push_back(x);
    k = 4;
    for (i = 4; i < (4 * (x / 4)) && k < n; ++i) {
      V.push_back(i);
      k++;
    }
    for (i = 4 * ((x / 4) + 1); k < n; ++i) {
      V.push_back(i);
      k++;
    }
    puts("YES");
    for (i = 0; i < V.size(); ++i) printf("%lld ", V[i]);
  }
  return 0;
}
