import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
public class CD70 {
public static void main(String[] args) throws IOException {
BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
String[] str = sc.readLine().split(" ");
int length = Integer.parseInt(str[0]);
int target = Integer.parseInt(str[1]);
int[] arr = new int[length];
String[] data = sc.readLine().split(" ");
for (int i = 0; i < length; i++) {
arr[i] = Integer.parseInt(data[i]);
}
Arrays.sort(arr);
int result = process(arr,target);
System.out.println(result);
}
private static int process(int[] arr, int target) {
ArrayList<Integer> list = new ArrayList<>();
int range = 0;
//数组内元素能表示的最大元素 连续的
for (int i = 0; i < arr.length; i++) {
if (arr[i]<=range+1){
range+=arr[i];
}
else{
list.add(range+1);
range+=range+1;
i--;
//新加了元素 但是没有加上i位置的值
}
if (range>=target){
break;
}
}
//range < target 时
while(range<target){
list.add(range+1);
range += range + 1 ;
}
return list.size();
}}

京公网安备 11010502036488号