#include <bits/stdc++.h>
using namespace std;
using ll = long long;
template <typename T = ll>
using v = vector<T>;
template <typename T = ll>
using vv = vector<v<T>>;
template <typename T = ll, typename U = ll>
using p = pair<T, U>;
const ll INF = (ll)1e9;
const ll MOD = INF + 7;
template <typename T>
T chmin(T &a, T b) {
  return a = min(a, b);
}
template <typename T>
T chmax(T &a, T b) {
  return a = max(a, b);
}
struct modint {
  ll a;
  modint() : a(0) {}
  modint(ll t) {
    a = t % MOD;
    if (a < 0) a += MOD;
  }
  bool operator==(const modint &x) const { return a == x.a; }
  bool operator!=(const modint &x) const { return a != x.a; }
  modint operator-() const { return modint(a ? (MOD - a) : 0); }
  modint operator~() const { return modint(MOD - 2); }
  modint operator+(const modint &x) const { return modint(*this) += x; }
  modint operator-(const modint &x) const { return modint(*this) -= x; }
  modint operator*(const modint &x) const { return modint(*this) *= x; }
  modint operator/(const modint &x) const { return modint(*this) /= x; }
  modint &operator+=(const modint &x) {
    a += x.a;
    if (a >= MOD) a -= MOD;
    return *this;
  }
  modint &operator-=(const modint &x) {
    a -= x.a;
    if (a < 0) a += MOD;
    return *this;
  }
  modint &operator*=(const modint &x) {
    a = a * x.a % MOD;
    return *this;
  }
  modint &operator/=(const modint &x) {
    a = a * (~x).a % MOD;
    return *this;
  }
  friend ostream &operator<<(ostream &os, const modint &x) { return os << x.a; }
  friend istream &operator>>(istream &is, modint &x) {
    ll t;
    x = modint(t);
    return is;
  }
  modint pow(ll x) const {
    modint ret = 1, tmp = a;
    for (; x; tmp *= tmp, x >>= 1) {
      if (x & 1) ret *= tmp;
    }
    return ret;
  }
};
modint nCr(int n, int r) {
  modint ans = 1;
  for (int i = 1; i <= r; i++) ans *= modint(n - i + 1) / modint(i);
  return ans;
}
int main() {
  ll n, x;
  cin >> n >> x;
  auto a = v<>(n, 0);
  for (ll i = 0; i < (n); i++) cin >> a[i];
  sort(a.begin(), a.end());
  for (ll i = 0; i < (n); i++) {
    if (x <= 0) {
      cout << i + 1 << endl;
    }
    x -= a[i];
  }
  cout << 0 << endl;
  return 0;
}
