问题描述
线段树是小L最喜欢的数据结构,它能高效地解决许多实际问题。
给定一个正整数n,小L构建出一棵下标属于整数区间[1,n]的线段树:
- 初始线段树只有一个结点[1,n]。
- 对于结点[L,R],若L<R,则令mid=[2L+R]([x]表示不超过x的最大整数),小L对这个结点建出两个子结点[L,mid]、[mid+1,R]。
小L定义了一个函数cover(a,b)(1≤a≤b≤n),表示用若干个线段树结点不重不漏地覆盖区间[a,b],则使用的线段树结点个数的最小值。
小L尝试使用这棵线段树解决某个复杂问题,并想要粗略地评估这棵线段树的性能。
具体来说,区间[1,n]有2n(n+1)个不同的子区间,如果小L从这2n(n+1)个子区间中等概率随机地选取一个,将其记为[A,B],则小L认为cover(A,B)的期望值可用于评估此线段树的性能。
小L想请你帮他计算出cover(A,B)的期望值与2n(n+1)的乘积对1,000,000,007取模的结果,可以发现此结果一定是一个整数。
输入格式
第一行一个正整数T(1≤T≤1000)表示数据组数。
接下来T行,其中第i(1≤i≤T)行一个正整数n(1≤n≤1018)表示第i组数据。
输出格式
T行,第i(1≤i≤T)行一个整数表示第i组数据的答案。
1
3
7
样例解释
cover(1,1)=1,cover(2,2)=1,cover(3,3)=1,cover(1,2)=1,cover(2,3)=2,cover(1,3)=1,故cover(A,B)的期望=61+1+1+1+2+1=67。