#include <bits/stdc++.h>
using namespace std;
int t = 1000001;
class myData {
 public:
  int v;
  long long dist;
  myData(int v, long long dist) : v(v), dist(dist) {}
};
long long exponentMod(int A, int B, int C) {
  if (A == 0) return 0;
  if (B == 0) return 1;
  long y;
  if (B % 2 == 0) {
    y = exponentMod(A, B / 2, C);
    y = (y * y) % C;
  } else {
    y = A % C;
    y = (y * exponentMod(A, B - 1, C) % C) % C;
  }
  return (int)((y + C) % C);
}
int factorize(long long n) {
  int j = 0;
  int ans = 1;
  for (long long i = 2; i * i <= n; ++i) {
    while (n % i == 0) {
      if (j != 0)
        ans *= i;
      else
        j = 1;
      n /= i;
    }
  }
  if (n != 1) {
    if (j == 1) ans *= n;
  }
  return ans;
}
map<long long, long long> bit;
int N = 2e5;
void update(long long i) {
  for (; i <= N; i += i & (-i)) bit[i]++;
}
long long get(long long i) {
  long long ans = 0;
  for (; i > 0; i -= i & (-i)) ans += bit[i];
  return ans;
}
int root[200005];
long long si[200005];
int id(int x) {
  if (x == root[x]) return x;
  return root[x] = id(root[x]);
}
int now;
long long ans[2001][2001];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n, x;
  cin >> n >> x;
  if (n == 1)
    cout << "YES\n" << x << endl;
  else if (n == 2 && x == 0)
    cout << "NO" << endl;
  else if (n == 2)
    cout << "YES\n0 " << x << endl;
  else {
    cout << "YES" << endl;
    int ans = 0;
    for (int i = 1; i <= n - 3; ++i) cout << i << " ", ans = ans ^ i;
    if (ans == x)
      cout << (1 << 17) << " " << (1 << 17) + (1 << 18) << " " << (1 << 18);
    else
      cout << (1 << 17) << " " << ((1 << 17) ^ ans ^ x) << " 0";
  }
}
