#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
#define pr(x) printf("%lld\n", (x))
#define rep(i, l, r) for (int i = (l); i <= (r); ++i)
using namespace std;
typedef long long ll;
const int N = 105;
const int mod = 1e9 + 7;
int a[N], car[N];
int ans = 0x3f3f3f3f;
int n, w;
void dfs(int idx, int p) {
if (p >= ans) return;
if (idx == n + 1) {
ans = min(p, ans);
return;
}
rep(i, 1, p) if (car[i] + a[idx] <= w) { // 可以上车
car[i] += a[idx];
dfs(idx + 1, p);
car[i] -= a[idx]; // 回溯
}
if (idx != 1) { // 单独放
car[++p] = a[idx];
dfs(idx + 1, p);
}
}
int main() {
scanf("%d%d", &n, &w);
rep(i, 1, n) scanf("%d", a + i);
dfs(1, 1);
printf("%d", ans);
return 0;
}