编程题
### 问题描述
小蓝有一个 $n$ 天的假期,他打算用这 $n$ 天清理房间。在仓库里有 $n$ 个清洁工具可以选择,这些工具从 $1$ 到 $n$ 编号,小蓝使用编号为 $i$ 的工具可以使房间的清洁值增加 $a_i$ 。
但是,使用编号为 $i$ 的工具也会使当天小蓝的劳累值为 $a_i$ 。小蓝有一个劳累承受极限值 $m$ ,当第 $i$ 天小蓝的劳累值超过 $m$ 时,那么小蓝在那天之后的 $d$ 天就必须休息( 即小蓝在第 $i+1,i+2,….,\min(i+d,n)$ 里必须休息)。
小蓝每天可以选择一个任意编号的清洁工具进行清理房间,但是,因为这些工具都是一次性的,被选择过的工具不能再次选择,且小蓝每天只能使用一个工具。
小蓝想请你帮助他,他应当如何安排清理房间的工作,才能使这 $n$ 天后房间的清洁值最大(房间的清洁值初始时为 $0$ )。
### 输入格式
第一行包含三个整数 $n,d,m$ ,分别表示小蓝清理房间的天数(以及清洁工具的个数),小蓝每次劳累值超过极限后必须休息的天数,和小蓝的劳累极限值。
第二行包含 $n$ 个整数 $a_1,a_2,…,a_n$ ,表示不同编号的工具的清洁值。
### 输出格式
输出一个整数,表示 $n$ 天后房间清洁值的最大值。
### 样例输入
```
5 2 11
8 10 15 23 5
```
### 样例输出
```
48
```
### 评测数据规模
对于所有评测数据, $1\leq{d}\leq{n}\leq{10^5 },0\leq{m}\leq{10^9 },0\leq{a_i}\leq{10^9 }$ 。