import std.stdio;
import std.string;
import std.conv;
import std.array;
import std.algorithm;
import std.range;
import std.exception;

/// solve ===================
T solve(T)(T[] C, T M, T acc = 0){
  if(M < C[0])        return acc;
  else if(M == C[0])  return acc + 1;
  return solve(C[1..$], M-C[0], acc+1);
}


/// main ===================
void main(){
  int N, M, res, cumulative;
  auto NM = readln.strip.split(" ").map!(to!int).array;
  auto C = readln.strip.split(" ").map!(to!int).array.sort;
  solve(C, NM[1]).writeln;
}