#P2050. 2024.9.11-阿里淘天-第3题-小塔的字符串

2024.9.11-阿里淘天-第3题-小塔的字符串

题目内容

对于一个长度为kk且只包含字符0011的字符串s1s2...sks_1s_2...s_k,定义其权值为:

  • 每次操作可以选择一个下标i(1ik)i(1≤i≤k),将[1,i][1,i]的字符全部取反(00111100);

  • 将字符串变为全11需要的最少操作次数。

例如字符串0011000110

第一次操作选择i=5i=5,字符串变成1100111001

第二次操作选择i=4i=4,字符串变成0011100111

第三次操作选择i=2i=2,字符串变成1111111111

至少需要33次操作,字符串权值为33

定义其重量为:该字符串的全部非空子串的权值总和。

子串是指从原字符串中,连续的选择一段字符组成的新字符串。

现在,给出一个整数nn,问:全部长度为nn010-1的字符串的重量总和是多少?

输入描述

每个测试文件均包含多组测试数据。

第一行输入一个整数T(1T103)T(1≤T≤10^3)代表数据组数,每组测试数据描述如下:

每行输入一个整数n(1n106)n(1≤n≤10^6)表示给定的整数。

除此之外,保证所有的nn之和不超过10710^7

输出描述

对于每一组测试数据,在一行上输出一个整数,代表重量总和。

由于答案可能很大,请将答案对(109+7)(10^9+7)取模后输出。

示例1

输入

2
2
1

输出

8
1

说明

对于第一组测试数据,全部010-1子串有00,01,10,1100,01,10,11