U529865 异或

题目背景

题目描述

给你一个长度为 $n$ 的序列 $a$, 下面有两种操作: 1. 将区间 $[l,r]$ 之间的数(包括 $l、r$)异或 $x$。 1. 求 $[l,r]$ 之间数的和,并对 $10^9+7$ 取模。 你需要进行 $q$ 次操作。

输入格式

第一行一个整数 $n$,代表序列长度。 第二行 $n$ 个整数,表示序列 $a$。 第三行一个整数 $q$,代表操作次数。 第 $[4,q+3]$ 行,每行包含 $[3,4]$ 个整数,表示一个操作。 1. `1 l r x`:将区间 $[l,r]$ 之间的数(包括 $l、r$)异或 $x$。 2. `2 l r`:求 $[l,r]$ 之间数的和,并对 $10^9+7$ 取模。

输出格式

输出包含若干行整数,即为所有操作 2 的结果。

说明/提示

对于 $40\%$ 的数据:$1 \le n,q \le 5000$。 对于 $100\%$ 的数据:$1 \le n,q\le 5 \times 10^5,0 \le a_i,x \le 10^{18}$。