#loj5658. 「POI2026 R3」Dyscyplina

「POI2026 R3」Dyscyplina

AdditionalFile5658.zip

#5658. 「POI2026 R3」Dyscyplina

标签: 传统 | 时间限制: 3000 ms | 内存限制: 128 MiB |

题目描述

题目译自 XXXIII Olimpiada Informatyczna – III etap Dyscyplina

在采石场工作是一项要求极高的差事。你不仅需要把石头从一个地方搬到另一个地方,还必须遵守采石场负责人的各种怪念头——据说这些规定是为了培养员工的纪律性。

采石场中有 nn 堆石头,编号从 11nn。第 ii 堆由 aia_{i} 个石头组成。拜塔扎尔的任务是将所有的石头搬运到相邻的采石场。

由于这是一项劳累的工作,每天最多只能搬运一个石头。此外,根据负责人的构想,拜塔扎尔只有当数字 kk 的二进制表示中(从最低位起,编号当然是从 11 开始)第 ii 位为 11 时,才能在第 kk 天搬走第 ii 堆中的一个石头。例如,在第五天(二进制为 101101),拜塔扎尔可以搬走第 11 堆或第 33 堆中的一个石头。

为了在遵守所有限制条件的前提下搬走采石场中所有的石头,至少需要经过多少天?由于这个数字可能非常大,请输出它对质数 10000000071000000007 取模后的结果。

输入格式

第一行包含一个正整数 nn (1n105)(1 \leq n \leq 10^{5}),表示采石场中石堆的数量。

第二行包含 nn 个正整数 a1,a2,,ana_{1}, a_{2}, \ldots, a_{n} (1ai1015)(1 \leq a_{i} \leq 10^{15}),表示各石堆中的石头数量。

输出格式

你的程序应当输出搬走所有石头所需的最少天数对 10000000071000000007 取模的结果。

样例

输入

3
2 4 2

输出

9

达成结果为 99 的一个示例方案是在各天依次从以下石堆搬走石头:1,2,2,3,3,2,2,,11, 2, 2, 3, 3, 2, 2, -, 1。在第八天(用 - 表示),我们选择不搬运任何石头。

附加样例

  • 0a\texttt{0a}:即为上述样例。
  • 0b\texttt{0b}n=4n=4,石堆中分别有 1,2,3,41, 2, 3, 4 个石头。结果为 1111
  • 0c\texttt{0c}n=7n=7,所有的 aia_{i} 均为 44。结果为 6767
  • 0d\texttt{0d}n=8,ak=a1k(mod101511)n=8, a_{k}=a_{1}^{k} \pmod{10^{15}-11}。结果为 691312137691312137

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 77 n4,ai5n \leq 4, a_{i} \leq 5
22 66 n6,ai10n \leq 6, a_{i} \leq 10
33 1010 n8,ai30n \leq 8, a_{i} \leq 30
44 1212 n8n \leq 8
55 1111 n16n \leq 16
66 1414 n20n \leq 20
77 1111 ai105a_{i} \leq 10^{5}
88 2929 无附加限制