编程题
### 问题描述
小蓝是一个热爱算法的人,他这次去书店选择算法竞赛的书籍。
这次他总共带了 $x$ 元进店,但令人头痛的是这次你不知道他会买多少钱的书。 作为一名饱受折磨的书店店员,你决定提前准备一些零钱用于找零。
便利店的仓库中共有 $n$ 种面额的零钱,每种零钱有无限多张。为了方便找零,你希望携带尽可能少的纸币,并且你希望这些纸币可以组合出 $1$ 到 $x$ 的任意金额(包含 $1$ 与 $x$ 两种金额)。
### 输入格式
第一行两个整数 $n$ 与 $x$ 。
第二行 $n$ 个正整数,第 $i$ 个数 $a_i$ 代表第 $i$ 种零钱的面值。
### 输出格式
输出最少需要携带的零钱张数。
若不存在满足条件的方案,则输出 $-1$ 。
### 样例输入
```text
3 9
1 2 3
```
### 样例输出
```text
4
```
### 说明
在样例中,选择面值为 $3$ 的钱币两张,面值为 $1$ 和 $2$ 的钱币各一张。
### 评测数据规模
对于 $100$% 的评测数据,$1 \leq n \leq 10^6,1 \leq x \leq 10^{18},1 \leq a_i \leq 10^9$。