[JRKSJ R3] 琴琴的树

题目描述

琴琴有一棵二叉树,满足: * 该树有无穷多个结点。 * 每个结点都有编号和权值。初始所有结点的权值为 $0$。 * 树根的编号为 $1$。 * 若一个结点的编号为 $i$,则该结点的左右儿子的编号分别是 $2i,2i+1$。 琴琴要对树进行共 $m$ 次操作,每次操作是二者之一: 1. 将编号为 $x$ 的结点为根的子树中的每个结点的权值都加 $v$。 2. 求树上编号为 $x$ 的结点到编号为 $y$ 的结点的路径上每个结点的权值和。答案对 $2^{32}$ 取模。 不过琴琴不会直接给出 $x,y$。她再给出一个长度为 $n$ 的 $01$ 序列 $a$,每次给出 $x$ 或 $y$ 时给出一个区间 $[l_x,r_x]$ 或 $[l_y,r_y]$,这个数就是将这个区间视作二进制数的值。

输入输出格式

输入格式


第一行两个整数 $n,m$。\ 第二行一个长度为 $n$ 的字符串表示 $a$。保证字符串中只包含 `0` 和 `1`。\ 下面 $m$ 行,每行一个操作编号,然后是操作。操作的格式为: 1. $\ l_x\ r_x\ v$ 2. $\ l_x\ r_x\ l_y\ r_y$

输出格式


对于每个操作 $2$,每行一个整数表示答案。

输入输出样例

输入样例 #1

5 5
01010
1 4 5 5
2 1 3 2 5
1 2 3 3
2 1 5 1 2
2 3 4 4 5

输出样例 #1

15
24
8

说明

### 样例解释 该树的前四层如图所示: ![](https://cdn.luogu.com.cn/upload/image_hosting/394f62g7.png) 第一个操作:将以 $2$ 为根的子树中的结点权值加上 $5$。\ 第二个操作:求 $2\rightarrow 10$ 的路径上的点的权值和。\ 第三个操作:将以 $2$ 为根的子树中的结点权值加上 $3$。\ 第四个操作:求 $10\rightarrow 1$ 的路径上的点的权值和。\ 第五个操作:求 $1\rightarrow 2$ 的路径上的点的权值和。 ### 数据规模与约定 **本题采用捆绑测试。** | $\text{Subtask}$ | $n\le$ | $m\le $ | 分值 | | :----------: | :----------: | :----------: | :----------: | | $1$ | $10$ | $10^3$ | $5$ | | $2$ | $20$ | $10^5$ | $5$ | | $3$ | $10^4$ | $10^4$ | $20$ | | $4$ | $4\times 10^5$ | $4\times 10^5$ | $70$ | 对于 $100\%$ 的数据,$1\le n,m\le 4\times 10^5$,$1\le v \le 10^9$,$1\le l_x\le r_x\le n$,$1\le l_y\le r_y\le n$,保证 $x,y\ne 0$。