子集和问题

子集和问题

Description

子集和问题的一个实例为 <S,t>其中,S=x1,x2,⋯,xn是一个正整数的集合,c 是一个正整数。子集和问题判定是否存在S的一个子集 S1,使得子集 S1和等于c。
对于给定的正整数的集合 S=x1,x2,⋯,xn和正整数c,编程计算 S的一个字典序最小的子集 S1,使得子集 S1和等于 c。

Format

Input

由文件subsum.in提供输入数据。 文件第1行有2个正整数 n 和 c,n 表示 S 的个数,c是子集和的目标值。 接下来的1行中,有 n个正整数,表示集合S中的元素。

Output

程序运行结束时,将子集和问题的字典序最小的解输出到文件subsum.out中。 当问题无解时,输出No solution!

Sample 1

Input

5 10
2 2 6 5 4

Output

2 2 6

Limitation

1s, 256MiB for each test case. 评测方式:Special Judge
1≤n≤10^4, 1≤c≤10^7