tree_value_sum
题号:NC295291
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

各位认识树吗?对,就是树,如 
线段树,左偏树,平衡树,KD树,树套树,红黑树
等一大堆折磨人的树。
对的,这题不考这些树。

众所周知,树是一种常用的数据结构。
对于树,有出度,入度,父子节点等一大堆的概念。

下面将定义一棵我们熟悉到不能再熟悉的树:
  1. 定义 n 为树的节点数目。
  2. 定义 k 为树的最大出度。
  3. 定义 节点  1 为树的根节点。
  4. 定义 节点 i 的子节点为:节点 (i-1)*k + 2, 节点 (i-1)*k + 3, ..., 节点 i*k +1
  5. 定义 v_i 为节点的权值。
  6. 定义 对于 i \in [2, n] 的节点,其权值为根节点的权值 \oplus x,即 v_i = v_1 \oplus x
  7. 定义 对于 i=1 的节点,其权值为 v,即 v_1=v
  8. 定义 对于 i \notin [1, n] 的节点,其相关定义作废。
  9. 定义 \text{tree_value_sum}v_1 \oplus v_2 \oplus ... \oplus v_n

求出 \text{tree_value_sum}

\oplus为按位异或,详情见 按位异或

输入描述:

在一行输入 4 个正整数 n, k, v, x
1 \le n,k \le 2 \times 10^5
1 \le v,x \le 10^{12}

输出描述:

输出一个正整数,表示结果
示例1

输入

复制
1 1 1 1

输出

复制
1