CF242E XOR on Segment

题目描述

你得到了一个序列 $a$,其中包含 $n$ 个元素 $a_1,a_2,\cdots,a_n$。 你需要执行 $m$ 个操作,分为两种: - `1 l r`:求 $a_l\sim a_r$ 的和。 - `2 l r x`:将 $a_l\sim a_r$ 异或上 $x$。

输入格式

第一行,一个正整数 $n$,表示序列长度。 第二行,$n$ 个非负整数 $a_1,a_2,\cdots,a_n$。 第三行,一个正整数 $m$,表示操作个数。 接下来 $m$ 行,每行 $3$ 或 $4$ 个正整数,表示一个操作。

输出格式

对每个操作 $1$,输出一行一个整数表示答案。

说明/提示

$1\le n\le 10^5$ $1\le m\le 5\times 10^4$ $0\le a_i\le 10^6$ $1\le x \le 10^6$ - 在 `C++` 和 `Java` 中,异或符号为 `^`,在 `Pascal` 中为 `xor`。