L1-7 拼接梯子
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这一天,StarrySky 的梯子断裂,不能像以往一样在天际自由翱翔了,为此,他十分苦恼,甚至失去了对宝可梦的热爱。

幸运的是,kcxz 为他拼凑出了一把更加牢固的梯子,但为了回报,StarrySky 必须回答 kcxz 提出的关于梯子的一个问题,否则,kcxz 将狠心离去。

问题如下:

已知 kcxz 只拥有 k 段构造梯子的材料,长度分别为 ,且为了构造出的梯子效果更好,这 k 段材料不能裁剪,同时,在拼接过程中,材料之间不能覆盖,即:如果选择长度为 的两端拼接,则拼接出来的长度只能是 6.

同时又已知 StarrySky 想要一把长度为 L 的梯子。

kcxz 希望 StarrySky 在 内回答出,这 k 段材料是否能够拼接成长度为 L 的梯子,如果可以,还想要 StarrySky 同时回答选择的最长的材料长度为多少。

输入描述:

两个用空格隔开的正整数 k, L,表示 kcxz 拥有的材料数量以及 StarrySky 想要的梯子长度。

输出描述:

如果能用这 k 段材料拼接出长度为 L 的梯子,则输出 "Yes"(不含引号),并在第二行输出一个正整数,表示选择的最长材料的长度,否则输出 "No"(不含引号)。
示例1

输入

复制
3 10

输出

复制
Yes
8

说明

选择 2^1, 2^3 这两段材料即可拼接出长度为 10 的梯子,其中最长的材料长度为 2^3 = 8.

备注:

对于  的评测用例,
对于 的评测用例,
对于所有评测用例,