题目描述
彭教授正在挑选晋级世界决赛的队伍。由于地区赛被取消,他使用随机洗牌对球队进行排名。总共有n支队伍。他的代码如下:
uint64_t x;
int n;
uint64_t rand() {
x ^= x << 13;
x ^= x >> 7;
x ^= x << 17;
return x;
}
int main() {
cin >> n;
cin >> x;
for (int i = 1; i <= n; i++) {
a[i] = i;
swap(a[i], a[rand() % i + 1]);
}
for (int i = 1; i <= n; i++) {
cout << a[i] << (i == n ? '\n' : ' ');
}
}
他编译并运行代码,然后输入n和一些特殊的非负整数x。他将结果打印在纸上。
一天后,彭教授忘记了他对x的选择。你会得到代码的结果和整数n。请恢复彭教授输入的数字x。
输入格式
第一行包含一个整数
n$$(50\le n\le 100000)代表球队数量。
下一行包含n个整数,这是庞教授代码打印的结果。保证结果是正确的,即存在一个整数x$$(0\le x\le 2^{64}−1)导致结果。
输出格式
请注意,示例输入的第二行被包裹以适应页面的宽度。