Bob 喜欢线段树。
众所周知,ZJOI 的第二题有很多线段树。
Bob 有一棵根为
Bob 想知道,
具体定义
线段树:线段树是一棵每个节点上都记录了一个线段的二叉树。根节点记录的线段是
对于每个节点,若它记录的线段是
广义线段树:在广义的线段树中,
线段树的核心是懒标记,下面是一个带懒标记的广义线段树的伪代码,其中 tag
数组为懒标记:
注意,在处理叶子节点时,一旦他获得了一个标记,那么这个标记会一直存在。
你也可以这么理解题意:有一棵广义线段树,每个节点有一个 tag
数组均为 MODIFY(root, 1, n, l, r);
。
最后所有 Node
中满足 tag[Node] = 1
的期望数量就是需要求的值。
输入格式
第一行输入两个整数
接下来输入一行包含
保证给定的
输出格式
输出一行一个整数,代表期望数量对
样例一
input
3 1 1 2
output
166374060
explanation
输入的线段树为
若操作为
样例二
input
5 4 2 1 3 4
output
320443836
样例三
见附加文件中 ex_segment3.in
与 ex_segment3.ans
。
限制与约定
测试点 | 其他约定 | ||
---|---|---|---|
无 | |||
输入的线段树为完全二叉树 | |||
每个 |
|||
无 | |||
对于
时间限制:
空间限制: