Problem\mathrm{Problem}

小周猪猪是一只热爱数据结构的小猪猪,它热爱有趣的线段树。

线段树,就是它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。这样,我们就得到一个树形结构。具体的,我们可以用图来表示这个线段树:

小周猪猪的线段树
具体的说,我们对于任意区间[l,r][l,r],则我们可以将区间分治为[l,l+r2][l,\lfloor \frac{l+r}{2}\rfloor][l+r2+1,r][\lfloor \frac{l+r}{2}\rfloor+1,r].特别地,当l=rl=r时,当前节点为线段树的叶节点。

小周猪猪相信你已经能够熟练的掌握线段树。现在小周猪猪决定考考聪明的你:

小周猪猪规定,包含xx的节点表示为:节点中的线段[l,r][l,r]满足lxrl\le x\le r.包含xx的路径为:包含xx的节点构成的一条路径。

小周猪猪的线段树

例如,包含77的路径可以表示为途中标红的路径。

现在,小周猪猪有qq个询问:

  • 对于每一个询问给定四个值x1,x2,l,rx_1,x_2,l,r,区间[l,r][l,r]是根节点的线段,x1x_1x2x_2都可以在包含它的路径上随意选择个点最为最终的位置。小周猪猪想要知道,x1x_1x2x_2在树上找到相应位置后,它们的最大距离是多少。

输入格式

第一行,一个数qq

接下来qq行,每行四个数:x1,x2,l,rx_1,x_2,l,rx1x_1x2x_2

输出格式

qq行:第ii行表示第ii个询问的答案,即最大的树上距离。

输入样例

2
6 7 1 10
1 10 1 10

输出样例

4
7

数据规模与约定

对于测试点11~22,保证:l+1=rl+1=r.

对于测试点33~44,保证:x1=l,x2=rx_1=l,x_2=r

对于测试点55~88,保证:1r1×1051\le r\le 1\times 10^5

对于所有数据,保证:1lx1,x2r109,q1×1051\le l\le x_1,x_2 \le r\le 10^{9},q\le 1\times 10^5

难度评定:NOIP普及组T2难度。

相关文章: