#include int ri() { int n; scanf("%d", &n); return n; } uint32_t xorshift() { static uint32_t x = 2463534242; x ^= x << 13; x ^= x >> 17; x ^= x << 15; return x; } int main() { int n = ri(), x = ri(); bool inv = false; if (n >= 50000) n = 100005 - n, inv = true, x ^= 1; while (1) { std::set all; int xorr = x; for (int i = 0; i + 1 < n; i++) { int cur; do cur = xorshift() % 100005 + 1; while (all.count(cur)); all.insert(cur); xorr ^= cur; } if (xorr && !all.count(xorr)) { all.insert(xorr); if (inv) { for (int i = 1; i <= 100005; i++) { if (all.count(i)) all.erase(i); else all.insert(i); } } assert(all.size() == n); for (auto i : all) std::cout << i << std::endl; return 0; } } return 0; }