zyb 在莫斯科旅行期间购买了 $n$ 个套娃,尺寸分别为 $a_1, a_2, \dots, a_n$,已按从小到大的顺序排列。
尺寸为 $i$ 的套娃可以放入尺寸为 $j$ 的套娃中,当且仅当 $j - i \ge r$,其中 $r$ 是给定的整数参数。
zyb 希望将所有 $n$ 个套娃分成 $k$ 组,使得每一组都能形成一个嵌套的套娃序列。一组下标为 $c_1, c_2, \dots, c_m$ ($1 \le c_1 < c_2 < \dots < c_m \le n$) 的套娃能形成嵌套序列,当且仅当对于所有 $1 \le i < m$,满足 $a_{c_i} + r \le a_{c_{i+1}}$。
zyb 想知道将这 $n$ 个套娃分成 $k$ 组并满足上述要求的方法有多少种。注意,例如 $\{\{1, 2\}, \{3, 4\}\}$ 和 $\{\{3, 4\}, \{1, 2\}\}$ 这样的划分被视为同一种方法。由于答案可能很大,你只需要输出答案对 $998244353$ 取模的结果。
输入格式
第一行包含一个整数 $T(1 \le T \le 20)$,表示测试用例的数量。
对于每个测试用例,第一行包含三个整数 $n, k, r(1 \le k \le n \le 5000, 1 \le r \le 10^9)$,分别表示套娃的数量、zyb 想要划分的组数以及参数 $r$。
下一行包含 $n$ 个整数 $a_1, a_2, \dots, a_n(1 \le a_1 \le a_2 \le \dots \le a_n \le 10^9)$,表示套娃的尺寸。
保证所有测试用例的 $n$ 之和不超过 $50000$。
输出格式
对于每个测试用例,输出一行一个整数,表示答案对 $998244353$ 取模的结果。
样例
输入 1
2 4 3 2 1 2 3 4 4 2 1 1 1 2 2
输出 1
3 2