编程题
### 问题描述
话说在梁山水泊,宋江大哥为了让兄弟们在酒桌上比出个高下,决定来一场“酒量争霸赛”。这场比赛不比拳脚功夫,只比谁能喝得多,喝得久。
于是,$n$ 个好汉齐聚一堂,各个摩拳擦掌,准备展示自己的酒量。宋江大哥发话:“每位兄弟上场前,按照顺序报报自己的酒量,让大家心里有个数。” 于是,兄弟们依次按顺序报上了自己的初始酒量:$a_1, a_2, \ldots, a_n$。
接着,宋江大哥详细讲起了比赛的规则:
1. 每一轮开始前,所有兄弟先计算一下“累计酒量”,也就是这轮每个人要喝的酒量。具体来说,第 $i$ 个人这轮要喝的酒量 $b_i$ 是前面所有人的酒量之和:
$$
b_i = a_1 + a_2 + \cdots + a_i
$$
这就意味着,越靠后的兄弟,这轮得喝的酒越多!
2. 喝完这一轮后,最靠前的的那位兄弟会被淘汰出局(即序列 $b$ 的第一个元素)。
3. 剩下的兄弟们继续喝下一轮。在下一轮中,大家的酒量数据在每轮结束后会更新成上一轮的累计酒量(即上一轮计算出来的累计酒量 $b$ 会成为下一轮的初始酒量 $a$)。接着,大家再重新计算各自这一轮要喝的酒量。
4. 如此这般,每轮淘汰掉一个兄弟,直到最后只剩下一位能喝的“酒霸”。
宋江大哥笑着说:“这位酒霸的最终酒量,也不知道会是多少。”
对此,请你计算,经过一轮轮“喝酒淘汰赛”,最终那位唯一的酒霸,他的酒量对 $10^9 + 7$ 取余会是多少呢?
### 输入格式
第一行包含一个整数 $n$ $(1 \leq n \leq 10^5)$,表示好汉的数量。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$ $(1 \leq a_i \leq 10^9)$,表示每位好汉的初始酒量。
### 输出格式
输出一行,表示最终剩下的酒霸的酒量对 $10^9 + 7$ 取余的结果。
### 样例输入
```text
3
1 2 3
```
### 样例输出
```text
9
```
### 样例说明
1. 第一轮:
- 初始酒量:$a = [1, 2, 3]$
- 累计酒量:$b = [1, 3, 6]$
- 淘汰第一个:$1$
2. 第二轮:
- 更新酒量:$a = [3, 6]$
- 累计酒量:$b = [3, 9]$
- 淘汰第一个:$3$
3. 第三轮:
- 更新酒量:$a = [9]$
- 只有一人,结束。
最终酒霸的酒量为 $9$,输出结果为 $9$。