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();
}

}