#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define PI 3.14159265359 #define INF 99999999 #define rep(i, n) for(int i=0; i P; bool isLeap(int y); ll gcd(ll a, ll b); ll lcm(ll a, ll b); double distanceAB(double xa, double ya, double xb, double yb); void trace(int A[], int N); /* class Target { public: vector draw(int n) { } }; */ int main() { int N, M, C[10], sum = 0; cin >> N >> M; rep(i, N) cin >> C[i]; sort(C, C + N); //trace(C, N); rep(i, N) { sum += C[i]; if (sum == M) { cout << i + 1 << endl; break; } else if (sum > M) { cout << i << endl; break; } } return 0; } bool isLeap(int y) { return y % 400 == 0 ? true : y % 100 == 0 ? false : y % 4 == 0 ? true : false; } ll gcd(ll a, ll b) { return (b > 0) ? gcd(b, a % b) : a; } ll lcm(ll a, ll b) { return a / gcd(a, b) * b; } void trace(int A[], int N) { REP(N) { if (i > 0) cout << " "; cout << A[i]; } cout << endl; } double distanceAB(double xa, double ya, double xb, double yb) { return sqrt((xb-xa)*(xb-xa) + (yb-ya)*(yb-ya)); }