qb#P10008. 海边明信片墙的“凌乱度”

海边明信片墙的“凌乱度”

背景

海边有家很受欢迎的小书店,门口有一整面“明信片墙”。店主会把来自世界各地的明信片按一排排格框贴好,游客可以站在墙前给心仪的明信片拍照或换位。为了让陈列不至于“审美疲劳”,店主会不时把某些成组的格框整体翻转(就像把一截相片胶卷拿下来倒过来再贴回去),让墙面的视觉效果焕然一新。

这面墙一共有 2n2^n 个相邻格框,从左到右第 ii 个格框里放着一张明信片,标有一个整数标签 pip_i(可把它理解为“颜色深浅值”“到店日期序号”之类的朴素编号)。 我们把整面墙的“凌乱度”定义为这一排明信片标签的逆序对数量:也就是满足 i<ji<jpi>pjp_i>p_j 的有序对 (i,j)(i,j) 的个数。凌乱度越高,墙面看起来越“打破常规”。

接下来会发生 mm 次操作。每次操作店主会按如下方式翻动一段段“整齐的小截”:

  • 先把整排明信片平均分成 2qi2^{q_i} 段,每一段长度都是 2nqi2^{\,n-q_i};把这些段从左到右编号为第 11 段、第 22 段、……
  • 选择从第 lil_i 段到第 rir_i 段这片连续区域;
  • 对这一片区域里的每一段,都把段内的明信片顺序整体翻转(就像把一小截拿下来反过来再贴回去)。

店主想知道:每做完一次上述操作后,整面明信片墙的凌乱度是多少?


输入格式

  • 第一行:两个正整数 n,mn, m
  • 第二行:2n2^n 个整数 p1,p2,,p2np_1, p_2, \dots, p_{2^n},表示初始的明信片标签序列。
  • 接下来 mm 行:每行三个非负整数 qi,li,riq_i, l_i, r_i,表示一次操作,含义如上。

输出格式

输出 mm 行。第 ii 行是第 ii 次操作完成后整排明信片的凌乱度(逆序对数量)。


样例

样例输入 1

3 10
7 3 3 3 8 6 5 3
1 1 1
2 2 2
2 1 3
1 1 2
0 1 1
2 2 2
0 1 1
0 1 1
1 1 1
1 1 2

样例输出 1

9
10
8
7
15
14
8
14
12
17

数据范围与提示

对所有数据,满足 1n201 \le n \le 20, 1pi2n1 \le p_i \le 2^n, 1m1051 \le m \le 10^5, 0qi<n0 \le q_i < n, 1liri2qi1 \le l_i \le r_i \le 2^{q_i}

子任务编号 分值 nn \le mm \le 特殊性质
1 10 5 10
2 10 1000
3 20 20 10510^5 li=1,ri=2qil_i=1, r_i=2^{q_i}
4 li=ril_i=r_i
5 40