#define _CRT_SECURE_NO_DEPRECATE #include #include #include long bigInt = 1000000007; int minCoins(std::vector coins, int n, long long v) { std::vector table; table.push_back(0); for (int i = 1; i <= v; i++) { table.push_back(bigInt); } for (int i = 1; i <= v; i++) { for (int j = 0; j < n; j++) { if (coins[j] <= i) { int subRes = table[i - coins[j]]; if (subRes != INT_MAX && subRes + 1 < table[i]) table[i] = subRes + 1; } } } return table[v]; } int main() { freopen("coins.in", "r", stdin); freopen( "coins.out", "w", stdout); int n, s; std::vector coins; coins.push_back(1); scanf("%d %d", &n, &s); int number; for (int i = 0; i < n; i++) { scanf("%d", &number); coins.push_back(number * coins[i]); } printf("%d", minCoins(coins, n+1, s)); return 0; }