#include <bits/stdc++.h>
void swap(int *x, int *y) {
  int temp;
  temp = *x;
  *x = *y;
  *y = temp;
}
int gcd(int a, int b) {
  if (a < b) {
    swap(&a, &b);
  }
  if (b == 0) {
    return a;
  }
  int r = a % b;
  while (r != 0) {
    a = b;
    b = r;
    r = (a % b);
  }
  return b;
}
int dn(const void *a, const void *b) { return *(int *)b - *(int *)a; }
int modpow(int a, int n, int mod) {
  int ans = 1;
  while (n > 0) {
    if (n & 1) {
      ans = ans * a % mod;
    }
    a = a * a % mod;
    n /= 2;
  }
  return ans;
}
int max(int a, int b) {
  if (a < b) {
    return b;
  } else {
    return a;
  }
}
int min(int a, int b) {
  if (a < b) {
    return a;
  } else {
    return b;
  }
}
void chmax(int *a, int b) {
  if (*a < b) {
    *a = b;
  }
  return;
}
void chmin(int *a, int b) {
  if (*a > b) {
    *a = b;
  }
  return;
}
int main(void) {
  int n, x;
  scanf("%d%d", &n, &x);
  int a[n + 1];
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  int ans = 0;
  for (int i = 0; i < n; i++) {
    int min = 1000000000;
    int h = 0;
    for (int j = 0; j < n; j++) {
      if (a[j] < min) {
        chmin(&min, a[j]);
        h = j;
      }
    }
    if (x < min) {
      break;
    } else {
      ans++;
      x -= a[h];
      a[h] = 1000000000;
    }
  }
  if (x == 0) {
    printf("%d\n", ans);
  } else if (ans - 1 < 0) {
    printf("0\n");
  } else {
    printf("%d\n", ans - 1);
  }
  return 0;
}
