编程题
### 问题描述
小明有 $n$ 个山竹,第 $i$ 个山竹有 $a_i$ 片。小明来到幼儿园门口,决定将这些山竹分给 $k$ 个小朋友。
但是由于山竹是有限的,无法给每个小朋友都分到一个,所以小明将使用以下方法来分割山竹:如果一个山竹或山竹的一部分有偶数片,那么小明可以分为大小相等的两部分,如果是奇数片,则其中一份肯定比另一份多一片。
小明希望要么给每个小朋友一整个,或者一部分(几片),可能会有部分山竹或山竹片留在小明手里不被分出去。
假设 $b_i$ 的第 $i$ 个小朋友最终拥有的片数,小明的目标是使得 $b_i$ 的最小值最大。
### 输入格式
第一行,输入两个整数 $n,k$,表示山竹的个数和小朋友的个数。
第二行,输入 $n$ 个整数 $a_1,a_2,\dots,a_n$,表示每个山竹的片数。
### 输出格式
如果无法向每个小朋友赠送,请输出 `NO`,否则请输出最大的 $b_i$ 最小值。
### 样例输入1
```text
2 2
6 10
```
### 样例输出1
```text
6
```
### 样例输入2
```text
4 5
1 1 1 1
```
### 样例输出2
```text
NO
```
### 评测数据规模
对于所有评测数据,$1 \leq n \leq 10^6,1 \leq k \leq 2 \times 10^9,1 \leq a_i \leq 10^7$。