Reachability Count
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一条无限长的数轴,数轴上有若干个红色整数点,其坐标组成可重集合 \Bbb A = \{a_1, a_2, \dots, a_n\}
\hspace{15pt}一个机器人初始位于坐标为 1 的位置。机器人在每一时刻可以执行以下两种操作之一:
\hspace{23pt}\bullet\,向右跳跃,从当前位置 x 移动到 x + k
\hspace{23pt}\bullet\,向左跳跃,若当前位置 x > k,则可以从 x 移动到 x - k
\hspace{15pt}问在可重集合 \Bbb A 中,有多少个元素(红色整数点坐标)是机器人可以到达的。若多个红色整数点坐标相同且可达,则分别计数。

输入描述:

\hspace{15pt}第一行输入两个正整数 n,k \left(1 \le n \le 10^5;\, 1 \le k \le 10^9 \right),表示红色整数点的数量、每次跳跃的步长。
\hspace{15pt}第二行输入 n 个正整数 a_1, a_2, \dots, a_n \left(1 \le a_i \le 10^{18} \right),表示每个红色整数点的坐标。

输出描述:

\hspace{15pt}输出一个整数,表示能够被跳到的红色整数点数量。
示例1

输入

复制
5 3
1 4 7 2 10

输出

复制
4
示例2

输入

复制
3 2
1 1 1

输出

复制
3

备注: