P4847 银河英雄传说V2

题目背景

小 H 昨天看到了 [luogu P1196](https://www.luogu.com.cn/problem/P1196) 这一题,触发了他内心中对英雄的感慨/雾。可是无奈他不会这一题,只好去请教小 W。在讲完那一题之后,小 W 灵机一动——不如改一下这道题吧。 于是,一个很水的签到题出现了。

题目描述

某 dalao:把题目说简单一点,方便让我一分钟 A 掉! 于是小 W 只好把题意简化一下: 给定 $n$ 个长度为 $1$ 的序列,第 $i$ 个序列中有一个元素,值为 $a_i$,接下来有三种操作: 1. `M x y`,表示把 $x$ 所在的序列放到 $y$ 所在的序列之后。如果 $x,y$ 已经在同一个序列,则不进行操作。 2. `D x`,表示把 $x$ 所在的序列中从 $x$ 处断开,也就是把 $x$ 及 $x$ 之后的元素单独取出来作为一个序列。 3. `Q x y`,表示查询 $x$ 到 $y$ 之间(包括x和y)所有元素的值之和。如果 $x$ 和 $y$ 不在同一个序列之中,输出 `-1`.

输入格式

第一行为两个数 $n,m$,分别代表元素个数和操作次数。第二行有 $n$ 个数,为 $a_i$。 接下来m行,每行包括三种情况:`M x y`,`D x` 或 `Q x y`,与题目描述对应。

输出格式

对于每一个 `Q x y`,输出一个数,表示所有元素的值之和。

说明/提示

(出题人非常良心地给了一个大一点的样例!) **【样例 $1$ 解释】** 首先有 $5$ 个序列(一个横排为一个序列),排列如下: ``` 1 2 3 4 5 ``` 第一个操作将 $1$ 放到 $4$ 的后面,变成 ``` 2 3 4,1 5 ``` 第二个操作将 $3$ 放到 $2$ 后面,变成 ``` 2,3 4,1 5 ```` 然后查询第 $5$ 个元素到第 $2$ 个元素之间的和,由于不存在,输出 `-1`; 将 $3$ 所在的序列加到 $4$ 所在的序列后面,变成 ``` 4,1,2,3 5 ``` 接下来变成了 $5,4,1,2,3$,也就是所有元素都在 $1$ 个序列了,因此接下来的两个合并操作没有用了,然后把 $1$ 之后的数字删除,变成: ``` 1,2,3 5,4 ``` 查询 $2$ 到 $2$,输出 $a_2$,也就是 $55352$; 查询 $2$ 到 $1$,输出 $a_2+a_1$,也就是 $113122$. **【数据范围】** ![](https://cdn.luogu.com.cn/upload/pic/30577.png) ~~为了避免某些乱搞(可能避免不了)~~,**前 $5$ 个点按照传统方式计分,每个测试点 $10$ 分;后五个点为 subtask 捆绑测试,必须全部通过才能得 $50$ 分,否则不得分。** 对于所有数据,$1 \le x,y \le n,1 \le a_i \le 10^9$。