#arc035b. [arc035_b]アットコーダー王国のコンテスト事情

[arc035_b]アットコーダー王国のコンテスト事情

问题描述

高桥君是AtCoder王国的国王。

作为一个喜欢编程竞赛的国王,他统治着AtCoder王国,每年都会举办一次竞赛。

在这个竞赛中,会出现N个问题。此外,在排名时还存在一个称为“惩罚”的元素。当解决一个问题时,会根据从比赛开始到现在所经过的时间产生相应的惩罚,而每个问题都会有自己的惩罚。这些惩罚的总和称为竞赛的惩罚。请注意,这与ARC的惩罚规则不同。

你是一位非常优秀的公民,能够解决所有的问题。而且你知道对于每个问题,你需要花费多少时间才能解决,并且只要用这段时间解决问题,就一定能得到正确的答案。

由于你可以按照任意顺序解决问题,所以你想要使竞赛的惩罚最小化。

请计算出解决所有问题时的竞赛惩罚的最小值,以及有多少种这样的解法,将结果模除1,000,000,007(109+7)1,000,000,007(10^9+7)并输出。


输入

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

NN

T1T_1

T2T_2

:

TNT_N

  • 第1行是一个整数NN,表示竞赛中的问题数量 (1N10,000)(1 \leq N \leq 10,000)
  • 第2行到第NN行,每行表示解决每个问题所需的时间信息。其中第ii行包含一个整数TiT_i (1Ti10,000)(1 \leq T_i \leq 10,000),表示解决第ii个问题需要TiT_i分钟。

部分分

此问题设有部分分。

  • 在得到100分中的50分的测试样例中,使得竞赛惩罚最小化的解法的数量为1。

输出

输出结果以以下格式打印到标准输出:

  • 第1行:输出竞赛惩罚的最小值。请注意32位整数可能会溢出。
  • 第2行:输出使竞赛惩罚最小化的解法的数量,结果需要模除1,000,000,007(109+7)1,000,000,007(10^9+7)

示例1

2
20
10

输出1

40
1

最好先解决第2题,然后再解决第1题。

  • 比赛开始(时间:0分钟)。
  • 10分钟后,解决第2题(时间:10分钟)。此时产生的惩罚是10分钟。
  • 再过20分钟,解决第1题(时间:30分钟)。此时产生的惩罚是30分钟。

竞赛惩罚为40(=10+30)分钟。


示例2

5
2
1
2
1
2

输出2

21
12

示例3

13
1
1
1
1
1
1
1
1
1
1
1
1
1

输出3

91
227020758

无论以什么顺序解决问题都可以。不要忘记要对结果取模。