#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = 1061109567;
const double EPS = 1e-10;
const double PI = acos(-1.0);
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
int QP(int a, int b) {
  int ans = 1;
  do {
    if (b & 1) ans = 1ll * ans * a % MOD;
    a = 1ll * a * a % MOD;
  } while (b >>= 1);
  return ans;
}
int QP(int a, int b, int MOD) {
  int ans = 1;
  do {
    if (b & 1) ans = 1ll * ans * a % MOD;
    a = 1ll * a * a % MOD;
  } while (b >>= 1);
  return ans;
}
int GCD(int a, int b) { return b ? GCD(b, a % b) : a; }
int N, M;
vector<int> Vec;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int N, x;
  cin >> N >> x;
  vector<int> A(N);
  for (int i = (0); i < (N); ++i) cin >> A.at(i);
  sort((A).begin(), (A).end());
  int sum = 0;
  int n = N;
  for (int i = (0); i < (N); ++i) {
    sum += A.at(i);
    if (sum > x) {
      n = i;
      break;
    }
  }
  cout << n << "\n";
  return 0;
}
