#P1885. 2024.08.14-OPPO-第2题-小O的或运算

2024.08.14-OPPO-第2题-小O的或运算

题目描述

小O有一个长度为 nn 的数组 aa,他在数组 xx 上定义了一个函数 f(x)f(x),表示数组 xx 中所有元素做按位或运算的结果。(例如 x=[1,2,4,8]x = [1, 2, 4, 8],则 f(x)=1248=15f(x) = 1 \mid 2 \mid 4 \mid 8 = 15。)

小O现在希望将数组 aa 分割成尽可能少的段,使得所有段的 ff 函数值的最大值不超过 kk。请问他最少可以将 aa 分为几段,请你帮助他吧。

输入描述

输入包含两行。

第一行两个正整数 n,kn, k (1n2000001 \leq n \leq 200000),(1k1091 \leq k \leq 10^9),分别表示数组 aa 的长度,以及每段 ff 函数值的上限。

第二行 nn 个正整数 aia_i (1ai1091 \leq a_i \leq 10^9),表示数组 aa 的元素。

输出描述

输出包含一行一个整数,如果可以做到,则输出最少分成的段数,否则输出 1-1

示例 1

输入

4 4
1 2 4 3

输出

3

说明

可以分为:[1, 2], [4], [3] 这三段。