感谢庆典的MEX
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

111日是舟友们的感谢庆典,狂欢开始。在庆典上,德克萨斯和拉普兰德进行了双人追逐,由于两人的能量波动过于强烈,引发了时空黑洞。就这样,一位舟友的队友ljl在过马路时被大卡车暴力地送到了时空黑洞中,也不出意外地来到了感谢庆典,并且毫无意外地撞倒了德克萨斯,很快拉普兰德就消失了,(因为拉普兰德会点小魔术,所以她直接变装藏进了人群之中),导致德克萨斯失去了目标的方向。德克萨斯很生气,随即要对ljl进行惩罚,让ljl帮助找到拉普兰德的位置(由于拉普兰德喜欢挑逗德克萨斯,所以并没有离开,而是藏在了人群之中)。可怜的ljl只能乖乖寻找。

现在庆典上有一群群的人,可以把这些人分成n个组,编号为1 \sim n,每个组有a_i个人。但是人数太多了,ljl根本找不过来(庆典上的人都是戴着面具的),好在德克萨斯拥有一个特殊的仪器,能够找出拉普兰德,但是这个仪器必须在拉普兰德所在的组附近才能将拉普兰德找出。

按照下述方式可以确定拉普兰德所在的组:
任意选择一组的人(假设为第i组),将这组的人全部移除,再将这组中的 \left \lfloor \dfrac{a_i}{m} \right \rfloor(向下取整)(其中m为给定值)个人放回这组,你可以进行任意多次操作(也可以一次操作都不做),要求使得所有组人数的 \rm MEX最大,这个最大值就是拉普兰德所在的组号。

由于ljl刚刚穿越过来,还没有适应当前的情况,但是他通过系统获得了一个异次元通讯机,他马上联络你,请你帮助他找出拉普兰德所在的组号。

注:

一个组的人数可以是0,因为我们不能删除组数,而只能移除每组人数。

数组的 \rm MEX 定义为:没有出现在数组中的最小非负整数,例如,数组\{3,1,2\}\rm MEX0,数组\{0,1,2\}\rm MEX3,数组\{0,1, 1, 2, 2\}\rm MEX3

输入描述:

第一行:两个正整数n,m (1 \le n \le 10 ^ {5}, 1 \le m \le 10^{18})

第二行:n 个整数 a_1,a_2,\dots,a_n\ (0\le a_i \le 10^{18}),整数彼此间通过空格间隔。

输出描述:

输出一行,为一个整数,即当前序列的最大 \rm MEX
示例1

输入

复制
6 2
0 1 2 4 8 12

输出

复制
5

说明

对于该样例:

操作第6组人数12,随后第6组变成6,所有组的人数变成{0, 1, 2, 4, 8, 6};

继续操作第6组人数6,随后第6组变成3,所有组的人数变成{0, 1, 2, 4, 8, 3};

继续操作第5组人数8,随后第5组变成4,所有组的人数变成{0, 1, 2, 4, 4, 3};

继续操作第4组人数4,随后第4组变成2,所有组的人数变成{0, 1, 2, 2, 4, 3};

此时,得到所有组人数的最大$\rm MEX$为5。可以穷举证明此时没有比5更大的答案了。

答案就是5。
示例2

输入

复制
5 2
1 2 4 8 12

输出

复制
5
示例3

输入

复制
4 3
0 1 9 2

输出

复制
4
示例4

输入

复制
4 100000000000000000
100000000000000000 1000000000000000000 1000000000000000000 1000000000000000000

输出

复制
2