编程题
### 问题描述
小齐到市场上购买农场的必需品。他口袋里有 $K$ 枚硬币($1 \leq K \leq 16$),每枚硬币的面值在 $1$ 到 $100,000,000$ 之间。小齐希望按顺序进行 $N$ 次购物($1 \leq N \leq 100,000$),第 $i$ 次购物需要支付 $c(i)$ 单位货币($1 \leq c(i) \leq 10,000$)。在进行这一系列购物时,他可以在某些时刻停下来,用一枚硬币支付自从上次停下来以来的所有购物费用(当然,他使用的单枚硬币必须足够支付这些费用)。不幸的是,市场上的供应商完全没有零钱,所以每当小齐使用的硬币大于他所欠的金额时,他就会失望地无法收到找零。
请计算小齐在进行 $N$ 次购物后最多可以剩余的金额。如果小齐无法完成所有购物,请输出 $-1$。
### 输入格式
第 $1$ 行:两个整数 $K$ 和 $N$。
第 $2$ 行到第 $1+K$ 行:每行包含一枚小齐的硬币面值。
第 $2+K$ 行到第 $1+N+K$ 行:这 $N$ 行包含小齐打算购买的商品费用。
### 输出格式
小齐最多可以剩余的金额,如果小齐无法完成所有购物,则输出 $-1$。
### 样例输入
```
3 6
12
15
10
6
3
3
2
3
7
```
### 样例输出
```
12
```
### 评测数据规模
$1 \leq K, N \leq 100,000$,$1 \leq$ 小齐的硬币面值,购物费用 $\leq 100,000,000$。