#90. 青蛙学分块

青蛙学分块

D 青蛙学分块

题目描述

学霸题,数分青蛙块。

青蛙们有一个长度为 nn 的排列 {1,2,...,n1,n}\{1,2,...,n-1,n\},其中 nn22 的次幂。

青蛙要依次进行 mm 次操作:

  • ii 次操作时,青蛙会将排列分成 n2i1\frac{n}{2^{i-1}} 个长度为 2i12^{i-1} 个块,将第 jj 块和第 (j+1)(j+1) 块交换位置,其中 1jn2i11\leq j\leq \frac{n}{2^{i-1}},且 jj 为奇数。

青蛙一共要解决 TT 组询问,每次询问给定 n,m,l,rn,m,l,r,求经过 mm 操作后的排列第 llrr 个数的和。

输入格式

第一行,一个正整数 TT,代表询问组数。

接下来 TT 行,每行四个正整数 n,m,l,rn,m,l,r

输出格式

TT 行,每行一个正整数表示答案。

样例输入

2
8 1 2 4
8 2 2 4

样例输出

8
6

数据范围

  • 对于前 10%10\% 的数据:m=0m=0
  • 对于另外 20%20\% 的数据: l=1,r=nl=1,r=n
  • 对于前 40%40\% 的数据:n105,T100n\leq 10^5,T\leq 100
  • 对于前 60%60\% 的数据:n105n\leq 10^5
  • 对于 100%100\% 的数据:$1\leq n\leq 2^{31},0\leq m\leq \log_2 n,1\leq l\leq r\leq n,1\leq T\leq 10^6$.