Lupa 非常喜欢把液体从一个容器倒入另一个容器。
Lupa 有 $n$ 个普通透明瓶子和一个特殊透明瓶子。每个普通瓶子的高度为 $w$:瓶底位于高度 $0$,瓶顶位于高度 $w$。特殊瓶子的高度为 $2w$。
所有瓶子最初都装有果汁,液面位于同一个未知的整数高度 $x$,其中 $0\le x\le w$。Lupa 不知道 $x$ 的值。
普通瓶子被深色标签部分遮住。在第 $i$ 个普通瓶子中,标签遮住从 $l_i$ 到 $w$ 的所有高度。因此,当且仅当这个瓶子的果汁液面严格低于 $l_i$ 时,Lupa 才能看到液面。
特殊瓶子的标签有所不同:它遮住从 $0$ 到 $w$ 的所有高度。因此,当且仅当特殊瓶子的果汁液面严格高于 $w$ 时,Lupa 才能看到液面。
Lupa 想要唯一确定未知值 $x$。
Lupa 可以进行倒汁操作。在一次操作中,她选择一个普通瓶子和一个非负整数 $p$,然后从这个普通瓶子中恰好倒出 $p$ 单位的果汁到特殊瓶子里。每次操作后,Lupa 都会按照上述标签的遮挡情况,观察所有可见的果汁液面。
然而,Lupa 不允许进行可能无法完成的倒汁操作。更准确地说,在选择一次操作之前,考虑仍与此前所有观察结果相符的所有 $x$ 的值。只有对于每一个这样的可能值 $x$,所选瓶子中都至少有 $p$ 单位的果汁时,才允许从该瓶子倒出 $p$ 单位的果汁。
Lupa 的策略可以是自适应的:下一次操作可以取决于之前操作后得到的观察结果。一旦观察结果能够唯一确定 $x$ 的值,她就会停止。
求保证确定 $x$ 所需的最少倒汁次数,无论未知值 $x$ 是多少。
输入格式
第一行包含两个整数 $n$ 和 $w$($1\le n\le 10^6$,$2\le w\le 10^{18}$),分别表示普通瓶子的数量和高度。
第二行包含 $n$ 个整数 $l_1,l_2,\ldots,l_n$($1\le l_i<w$),表示普通瓶子上深色标签的下边界高度。
输出格式
输出一个整数,表示保证确定 $x$ 所需的最少倒汁次数。
样例
输入格式 1
3 34 1 2 4
输出格式 1
3
说明
在第一个测试中,考虑标签下边界为 $4$ 的瓶子。如果 $x<4$,那么在进行任何倒汁操作之前就能看到它的液面,因此已经知道 $x$。所以,假设 $4\le x\le 34$。
Lupa 首先从标签下边界为 $4$ 的瓶子中倒出 $4$ 单位的果汁到特殊瓶子里。
这次操作后,如果 $x<8$,那么这个瓶子中的液面高度为 $x-4<4$,因此可以看到液面并确定 $x$。如果 $x>30$,那么特殊瓶子中的液面高度为 $x+4>34$,因此可以看到液面并确定 $x$。所以,只有 $8\le x\le 30$ 的值仍可能未知。
接下来,Lupa 从同一个瓶子中再倒出 $4$ 单位的果汁。
这次操作后,如果 $x<12$,那么这个瓶子中的液面高度为 $x-8<4$,因此可以看到液面并确定 $x$。如果 $x>26$,那么特殊瓶子中的液面高度为 $x+8>34$,因此可以看到液面并确定 $x$。所以,只有 $12\le x\le 26$ 的值仍可能未知。
最后,Lupa 从标签下边界为 $2$ 的瓶子中倒出 $12$ 单位的果汁。
这次操作后,如果 $x<14$,那么这个瓶子中的液面高度为 $x-12<2$,因此可以看到液面并确定 $x$。如果 $x>14$,那么特殊瓶子中的液面高度为 $x+20>34$,因此可以看到液面并确定 $x$。唯一剩下的值是 $x=14$,所以也能确定它。
因此,经过 3 次倒汁操作后,Lupa 保证能够确定 $x$。