function candy_distribution_again(N, x, a) {
    a.sort(
        function(a, b) {
            return a - b;
        }
    );
    
    // N回やるか、配り終わるまでやるか、条件は二通りある
    for (let i = 0; i < N; i++) {
        x -= a[i];
    
        if (x == 0) return i + 1;       // ちょうど終わったとき
        if (x < 0) return i;            // 手持ちアメがマイナスになった時
        if (!a[i + 1]) return i;        // 次の子供がいない時
        if (x < a[i + 1]) return i + 1; // 次の子供が手持ちアメよりも多いアメを欲している時
    }
}
function main() {
    const input = input.split("\n");
    const Nx = input[0].split(" ");
    const a = input[1].split(" ");
    const N = Nx[0];
    const x = x[1];
    candy_distribution_again(N, x, a);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));