#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline bool Max(T &x, const T &y) {
  return x < y ? x = y, 1 : 0;
}
template <typename T>
inline bool Min(T &x, const T &y) {
  return x > y ? x = y, 1 : 0;
}
template <typename T>
using V = vector<T>;
template <typename T>
using VV = V<V<T> >;
static const long long MOD = 1e9 + 7;
static const double PI = 3.141592653589793;
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n;
  long long x;
  cin >> n >> x;
  long long a[n];
  int ans = 0;
  int i;
  for ((i) = 0; (i) < (n); (i)++) cin >> a[i];
  sort(a, a + n);
  for ((i) = 0; (i) < (n); (i)++) {
    x -= a[i];
    if (x < 0) break;
    ans++;
  }
  cout << (ans) << '\n';
  return 0;
}
