#Lutece2801. 滚筒印刷机

滚筒印刷机

Migrated from Lutece 2801 滚筒印刷机

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

为了赶制暑假前集训的海报, 小 HH 找隔壁的小 PP 借来了他的滚筒印刷机。

这个滚筒印刷机的形状是一个半径为 102910^{29} 的大轮子。上面有 KK 个着墨点,可以印出墨水。印刷的时候,先将纸条一端抵在原点,然后开启滚筒印刷机开始印刷。如果转到了滚筒印刷机的着墨点,那么滚筒印刷机会将这个位置涂成黑色。

因为轮子太大,所以滚筒印刷机上面还有一个复位键。点击后滚筒印刷机会转回到原点。

举例来说,如果轮子在 2,4,72, 4, 7 处有着墨点,那么小 HH 可以先滚 33 单位,在按复位键,然后滚 77 单位。这样得到的纸条会在 2,5,7,102, 5, 7, 10 处被染黑。 小 HH 非常激动,它决定利用这个滚筒印刷机来量产纸条。为了规整化,小 HH 对纸条的样式做出了规定:

  1. 印出来的纸条需要有正好 NN 个墨点。

  2. 纸条每距离 MM 至少有一个墨点。

  3. 纸条末端需要有一个墨点。

HH 想要知道它能够印出多少种不同的纸条。同时,为了算出预算,它还想知道所有不同的纸条的长度之和是多少。两条纸条不同当且仅当长度不同或者墨点位置不同。

Input

输入共 22 行。 第一行 33 个数 K,M,NK, M, N,表示着墨点个数,花纹距离限制,和墨点个数限制。 第二行 KK 个数 x1,x2xK(2x1<x2<<xK)x_1, x_2 · · · x_K(2 ≤ x_1 < x_2 < · · · < x_K),表示 KK 个着墨点的位置。 保证 xix_iintint 范围内。

Output

输出共 2 行。 第一行 1 个数,表示涂出的不同纸条个数。 第二行 1 个数,表示涂出的纸条长度之和。 注意,由于答案可能过大,你需要输出答案模998244353的值。

Samples

3 3 3
2 4 7
8
60
71 19 20
3 6 8 9 13 15 17 19 20 23 24 26 28 29 31 32 35 37 39 40 44 46 48 49 51 52 53 54 56 57 59 60 64 65 66 68 73 74 75 76 79 83 85 86 87 88 89 91 95 96 99 100 103 108 110 114 115 117 121 122 126 128 130 133 134 137 143 144 145 148 150
767532250
294892325

Constraints

N,M109,K100N,M \le 10^9 ,K \le 100

Note

样例1解释如下所示: DYVRQ.png

Resources

2022 UESTC ICPC Training for String and Search Algorithm