#include #include #include static unsigned long y = 2463534242; unsigned long xorshift(void) { y = y ^ (y << 13); y = y ^ (y >> 17); return y = y ^ (y << 5); } int main(void) { y = time(NULL); int N, M, A[100000]; scanf("%d%d\n", &N, &M); int curr = 0; for (int i = 0; i < N; ++i) { scanf("%d", &A[i]); curr ^= A[i]; } for (;;) { int from = xorshift()%M; int to = M + xorshift()%(N-M); curr ^= A[from] ^ A[to]; A[from] ^= A[to]; A[to] ^= A[from]; A[from] ^= A[to]; if (curr == (1<<20) - 1) { break; } } // printf("%d\n", curr); for (int i = 0; i < M; ++i) { printf("%d%c", A[i], i < M-1 ? ' ' : '\n'); } }