#include <bits/stdc++.h>
using namespace std;
int Set(int N, int pos) { return N = N | (1 << pos); }
int reset(int N, int pos) { return N = N & ~(1 << pos); }
bool check(int N, int pos) { return (bool)(N & (1 << pos)); }
int n, x;
vector<int> v;
int main() {
  cin >> n >> x;
  int y = 0;
  int pw = 1 << 18;
  for (int i = 1; i <= n - 3; i++) {
    y = y ^ i;
    v.push_back(i);
  }
  if (n == 2 && x == 0) {
    cout << "NO\n";
    return 0;
  } else if (n == 1) {
    cout << "YES\n";
    cout << x << endl;
    return 0;
  } else if (n == 2) {
    cout << "YES\n";
    cout << x << " " << 0 << endl;
    return 0;
  } else if (x != 0 && y == 0) {
    v.push_back(0);
    v.push_back(pw);
    v.push_back((pw ^ x));
  } else if (x == 0 && y == 0) {
    v.push_back(pw);
    v.push_back((pw ^ (pw + pw)));
    v.push_back((pw + pw));
  } else if (x == 0 && y != 0) {
    v.push_back(y ^ pw);
    v.push_back(pw ^ (pw + pw));
    v.push_back((pw + pw));
  } else {
    v.push_back(y ^ pw);
    v.push_back(pw ^ (pw + pw));
    v.push_back(((pw + pw) ^ x));
  }
  cout << "YES\n";
  for (int i = 0; i < v.size(); i++) {
    cout << v[i] << " ";
  }
  cout << endl;
  return 0;
}
