#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
long long gcd(long long x, long long y) { return y ? gcd(y, x % y) : x; }
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
int main() {
  int N, x;
  scanf("%d%d", &N, &x);
  vector<int> a;
  for (int i = 0; i < (N); ++i) {
    int in;
    cin >> in;
    a.push_back(in);
  }
  sort((a).begin(), (a).end());
  reverse((a).begin(), (a).end());
  int ans = 0;
  for (int i = 0; i < (N - 1); ++i) {
    if (x <= 0) break;
    if (a[i] <= x) {
      x = x - a[i];
      ans++;
    }
  }
  if (a[N - 1] == x) ans++;
  cout << ans << endl;
}
