#CF1041C. 咖啡休息

咖啡休息

题目描述

最近,Monocarp找到了一份工作。他的工作日持续 m m 分钟。在工作期间,Monocarp想要在某些时刻喝咖啡:有 n n 分钟 a1,a2,,an a_1, a_2, \dots, a_n ,他可以并且愿意休息一分钟喝咖啡(为简单起见,假设每次咖啡休息都恰好持续一分钟)。

然而,Monocarp的老板不喜欢Monocarp经常休息喝咖啡。因此对于将在第 ai a_i 分钟进行的咖啡休息,Monocarp必须选择他将在哪一天的这一分钟喝咖啡,以便任意两次咖啡休息之间至少间隔 d d 分钟。Monocarp还希望在尽可能少的工作日内进行这 n n 次咖啡休息(他不计算不上班的日子,并且在这些日子不会休息喝咖啡)。请注意,任何一个工作日结束和下一个工作日开始之间的时间间隔都超过 d d 分钟。

你需要最小化所花费的工作日数,并输出这个值。

输入格式

第一行包含三个整数 n n m m d d (1n2105,nm109,1dm) (1 \le n \le 2\cdot10^{5}, n \le m \le 10^{9}, 1 \le d \le m) —— Monocarp想要进行的咖啡休息次数,每个工作日的长度以及任意两次连续咖啡休息之间的最小分钟数。

第二行包含 n n 个不同的整数 a1,a2,,an a_1, a_2, \dots, a_n (1aim) (1 \le a_i \le m) ,其中 ai a_i 是Monocarp想要进行咖啡休息的某一分钟,保证所有的ai a_i 互不相同。

输出格式

在第一行中,写下完成每个给定分钟咖啡休息所需的最少天数。

样例 #1

样例输入 #1

4 5 3
3 5 1 2

样例输出 #1

3

样例 #2

样例输入 #2

10 10 1
10 5 7 4 6 3 2 1 9 8

样例输出 #2

2

提示

在第一个示例中,Monocarp可以在第一天休息两次咖啡(在分钟 1 1 5 5 进行休息,这两次休息之间间隔了 3 3 分钟)。在第二天休息一次咖啡(在分钟 2 2 进行休息),在第三天休息一次咖啡(在分钟 3 3 进行休息)。

在第二个示例中,Monocarp可以按照以下方式确定休息的那一天:如果他想要休息的分钟是奇数,则这次休息在第一天;如果是偶数,则在第二天。