#abc147d. [abc147_d]Xor Sum 4

[abc147_d]Xor Sum 4

题目描述

我们有 NN 个整数,第 ii 个整数是 AiA_i

求 $\\sum_{i=1}^{N-1}\\sum_{j=i+1}^{N} (A_i \\text{异或} A_j)$,对 (109+7)(10^9+7) 取模。

什么是异或(XOR)?

整数 AABB 的异或,表示为 AtextXORBA \\text{ XOR } B,定义如下:

  • AtextXORBA \\text{ XOR } B 转换成二进制形式后,第 2k2^k (kgeq0k \\geq 0) 位上的数字为 11 当且仅当 AABB 的第 2k2^k 位上的数字为 11,否则为 00

例如,3textXOR5=63 \\text{ XOR } 5 = 6。 (转换成二进制形式: 011textXOR101=110011 \\text{ XOR } 101 = 110。)

约束条件

  • 2leqNleq3times1052 \\leq N \\leq 3 \\times 10^5
  • 0leqAi<2600 \\leq A_i < 2^{60}
  • 输入中的所有值都是整数。

输入

从标准输入读取输入数据,其格式如下:

NN A1A_1 A2A_2 ...... ANA_N

输出

将结果 $\\sum_{i=1}^{N-1}\\sum_{j=i+1}^{N} (A_i \\text{异或} A_j)$ 对 (109+7)(10^9+7) 取模后打印出来。

示例输入 1

3
1 2 3

示例输出 1

6

我们有 $(1\\text{异或} 2)+(1\\text{异或} 3)+(2\\text{异或} 3)=3+2+1=6$。

示例输入 2

10
3 1 4 1 5 9 2 6 5 3

示例输出 2

237

示例输入 3

10
3 14 159 2653 58979 323846 2643383 27950288 419716939 9375105820

示例输出 3

103715602

对结果取 (109+7)(10^9+7) 模后打印。