合并与拆分
题号:NC216076
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有个一正整数序列,一共有n个正整数,你有两种操作。

合并:将任意多个数合并成为一个新的正整数,新的数等于这些数之和。

拆分:将一个数拆分成为任意多个新的正整数,这些数之和等于原来的数。

你需要判断是否能将这n个正整数通过若干次操作,使得序列中的所有数都等于k,如果可以输出最少的操作次数,如果不可以,输出-1

输入描述:

只有一组案例。

第一行为2个正整数n,k。

第二行有n个正整数。(保证输入所有数字<=10)

输出描述:

输出最少的操作次数或者-1。

示例1

输入

复制
1 3
9

输出

复制
1

说明


示例2

输入

复制
3 3
1 1 1

输出

复制
1

说明


示例3

输入

复制
2 3
1 1

输出

复制
-1

说明


备注: