说明
给定一棵 n 个点的有根树。
有 q 次询问,第 i 次询问给定 xi,ki,要求点 xi 的 ki 级祖先,答案为 ansi。特别地,ans0=0。
本题中的询问将在程序内生成。
给定一个随机种子 s 和一个随机函数 get(x):
#define ui unsigned int
ui s;
inline ui get(ui x) {
x ^= x << 13;
x ^= x >> 17;
x ^= x << 5;
return s = x;
}
你需要按顺序依次生成询问。
设 di 为点 i 的深度,其中根的深度为 1。
对于第 i 次询问,$x_i = ((\operatorname{get}(s) \operatorname{xor} ans_{i-1}) \bmod n) + 1$,$k_i = (\operatorname{get}(s) \operatorname{xor} ans_{i-1}) \bmod d_{x_i}$。
输入格式
第一行三个整数 n,q,s。
第二行 n 个整数 f1…n,其中 fi 表示 i 的父亲。特别地,若 fi=0,则 i 为根。
输出格式
一行一个整数,表示 xori=1qi×ansi。
6 3 7
5 5 2 2 0 3
1
提示
【样例说明】
x1=4,k1=1,ans1=2;
x2=6,k2=3,ans2=5;
x3=3,k3=0,ans3=3;
故输出 1。
对于 20% 的数据,n,q≤103。
对于 50% 的数据,n,q≤105。
对于 100% 的数据,2≤n≤5×105,1≤q≤5×106,1≤s<232。