#include <stdint.h>
#define N 1<<27
#define min(x, y) (x<y?x:y)
#define max(x, y) (x<y?y:x)
#define SWAP(x,y) { const uint64_t a = min(temp[x], temp[y]); const uint64_t b = max(temp[x], temp[y]); temp[x] = a; temp[y] = b;}
uint64_t s[2] = {0xb78895b278bfd25bULL, 0x5b1384c2629587a9ULL};
inline uint64_t xrand(void) {
uint64_t s1 = s[0];
const uint64_t s0 = s[1];
s[0] = s0;
s1 ^= s1 << 23;
return (s[1] = (s1 ^ s0 ^ (s1 >> 17) ^ (s0 >> 26))) + s0;
}
int main(void){
uint32_t i;
uint64_t temp[9] = {0}, t, r;
for(i = 0; i < N; i ++){
temp[0] = xrand();
temp[1] = xrand();
temp[2] = xrand();
temp[3] = xrand();
temp[4] = xrand();
temp[5] = xrand();
temp[6] = xrand();
temp[7] = xrand();
temp[8] = xrand();
SWAP(0, 1);
SWAP(3, 4);
SWAP(6, 7);
SWAP(1, 2);
SWAP(4, 5);
SWAP(7, 8);
SWAP(0, 1);
SWAP(3, 4);
SWAP(6, 7);
SWAP(0, 3);
SWAP(3, 6);
SWAP(0, 3);
SWAP(1, 4);
SWAP(4, 7);
SWAP(1, 4);
SWAP(2, 5);
SWAP(5, 8);
SWAP(2, 5);
SWAP(1, 3);
SWAP(5, 7);
SWAP(2, 6);
SWAP(4, 6);
SWAP(2, 4);
SWAP(2, 3);
SWAP(5, 6);
r ^= temp[6];
}
return r;
}
I2luY2x1ZGUgPHN0ZGludC5oPgojZGVmaW5lIE4gMTw8MjcKCiNkZWZpbmUgbWluKHgsIHkpICh4PHk/eDp5KQojZGVmaW5lIG1heCh4LCB5KSAoeDx5P3k6eCkKI2RlZmluZSBTV0FQKHgseSkgeyBjb25zdCB1aW50NjRfdCBhID0gbWluKHRlbXBbeF0sIHRlbXBbeV0pOyBjb25zdCB1aW50NjRfdCBiID0gbWF4KHRlbXBbeF0sIHRlbXBbeV0pOyB0ZW1wW3hdID0gYTsgdGVtcFt5XSA9IGI7fQoKdWludDY0X3Qgc1syXSA9IHsweGI3ODg5NWIyNzhiZmQyNWJVTEwsIDB4NWIxMzg0YzI2Mjk1ODdhOVVMTH07CgppbmxpbmUgdWludDY0X3QgeHJhbmQodm9pZCkgewogICAgICAgIHVpbnQ2NF90IHMxID0gc1swXTsKICAgICAgICBjb25zdCB1aW50NjRfdCBzMCA9IHNbMV07CiAgICAgICAgc1swXSA9IHMwOwogICAgICAgIHMxIF49IHMxIDw8IDIzOwogICAgICAgIHJldHVybiAoc1sxXSA9IChzMSBeIHMwIF4gKHMxID4+IDE3KSBeIChzMCA+PiAyNikpKSArIHMwOwp9CgppbnQgbWFpbih2b2lkKXsKICAgICAgICB1aW50MzJfdCBpOwogICAgICAgIHVpbnQ2NF90IHRlbXBbOV0gPSB7MH0sIHQsIHI7CgogICAgICAgIGZvcihpID0gMDsgaSA8IE47IGkgKyspewogICAgICAgICAgICAgICAgdGVtcFswXSA9IHhyYW5kKCk7CiAgICAgICAgICAgICAgICB0ZW1wWzFdID0geHJhbmQoKTsKICAgICAgICAgICAgICAgIHRlbXBbMl0gPSB4cmFuZCgpOwogICAgICAgICAgICAgICAgdGVtcFszXSA9IHhyYW5kKCk7CiAgICAgICAgICAgICAgICB0ZW1wWzRdID0geHJhbmQoKTsKICAgICAgICAgICAgICAgIHRlbXBbNV0gPSB4cmFuZCgpOwogICAgICAgICAgICAgICAgdGVtcFs2XSA9IHhyYW5kKCk7CiAgICAgICAgICAgICAgICB0ZW1wWzddID0geHJhbmQoKTsKICAgICAgICAgICAgICAgIHRlbXBbOF0gPSB4cmFuZCgpOwoKICAgICAgICAgICAgICAgIFNXQVAoMCwgMSk7CiAgICAgICAgICAgICAgICBTV0FQKDMsIDQpOwogICAgICAgICAgICAgICAgU1dBUCg2LCA3KTsKICAgICAgICAgICAgICAgIFNXQVAoMSwgMik7CiAgICAgICAgICAgICAgICBTV0FQKDQsIDUpOwogICAgICAgICAgICAgICAgU1dBUCg3LCA4KTsKICAgICAgICAgICAgICAgIFNXQVAoMCwgMSk7CiAgICAgICAgICAgICAgICBTV0FQKDMsIDQpOwogICAgICAgICAgICAgICAgU1dBUCg2LCA3KTsKICAgICAgICAgICAgICAgIFNXQVAoMCwgMyk7CiAgICAgICAgICAgICAgICBTV0FQKDMsIDYpOwogICAgICAgICAgICAgICAgU1dBUCgwLCAzKTsKICAgICAgICAgICAgICAgIFNXQVAoMSwgNCk7CiAgICAgICAgICAgICAgICBTV0FQKDQsIDcpOwogICAgICAgICAgICAgICAgU1dBUCgxLCA0KTsKICAgICAgICAgICAgICAgIFNXQVAoMiwgNSk7CiAgICAgICAgICAgICAgICBTV0FQKDUsIDgpOwogICAgICAgICAgICAgICAgU1dBUCgyLCA1KTsKICAgICAgICAgICAgICAgIFNXQVAoMSwgMyk7CiAgICAgICAgICAgICAgICBTV0FQKDUsIDcpOwogICAgICAgICAgICAgICAgU1dBUCgyLCA2KTsKICAgICAgICAgICAgICAgIFNXQVAoNCwgNik7CiAgICAgICAgICAgICAgICBTV0FQKDIsIDQpOwogICAgICAgICAgICAgICAgU1dBUCgyLCAzKTsKICAgICAgICAgICAgICAgIFNXQVAoNSwgNik7CgogICAgICAgICAgICAgICAgciBePSB0ZW1wWzZdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHI7Cn0K