#include <bits/stdc++.h>
using namespace std;
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n, x;
  cin >> n >> x;
  vector<int> ans;
  bool flag = false;
  int foo = 1 << 18, bar = 1 << 19, foobar = foo + bar;
  switch (n % 4) {
    case 0:
      ans.push_back(foo);
      ans.push_back(bar);
      ans.push_back(foobar);
      ans.push_back(x);
      for (int i = 0; ans.size() != n; i += 4) {
        if (x / 4 * 4 != i) {
          for (int j = 0; j < 4; j++) {
            ans.push_back(i + j);
          }
        }
      }
      break;
    case 1:
      ans.push_back(x);
      for (int i = 0; ans.size() != n; i += 4) {
        if (x / 4 * 4 != i) {
          for (int j = 0; j < 4; j++) {
            ans.push_back(i + j);
          }
        }
      }
      break;
    case 2:
      if (x == 0) {
        if (n == 2) {
          cout << "NO" << endl;
          return 0;
        }
        ans.push_back(foo);
        ans.push_back(bar);
        ans.push_back(foobar);
        ans.push_back(foo + 3);
        ans.push_back(bar + 2);
        ans.push_back(foobar + 1);
      } else {
        ans.push_back(0);
        ans.push_back(x);
      }
      for (int i = 4; ans.size() != n; i += 4) {
        if (x / 4 * 4 != i) {
          for (int j = 0; j < 4; j++) {
            ans.push_back(i + j);
          }
        }
      }
      break;
    case 3:
      ans.push_back(foo ^ x);
      ans.push_back(bar ^ x);
      ans.push_back(foobar ^ x);
      for (int i = 0; ans.size() != n; i += 4) {
        if (x / 4 * 4 != i) {
          for (int j = 0; j < 4; j++) {
            ans.push_back(i + j);
          }
        }
      }
      break;
  }
  sort(ans.begin(), ans.end());
  cout << "YES" << endl;
  cout << ans[0];
  for (int i = 1; i < ans.size(); i++) {
    cout << " " << ans[i];
  }
  cout << endl;
  return 0;
}
