2 4 7
#include<stdio.h> #include<string.h> int a[30],b[30]; int n,k,flag,sum; void DFS(int x) { if(sum>k) return; if(sum==k) { flag=1; printf("YES\n"); for(int i=0;i<n;i++) { if(b[i]) printf("%d ",a[i]); } printf("\n"); return; } for(int i=x;i<n;i++) { if(sum+a[i]<=k) { sum+=a[i]; b[i]=1; DFS(i+1); sum-=a[i]; b[i]=0; } } } int main() { while(scanf("%d%d",&n,&k)!=EOF) { memset(b,0,sizeof(b)); for(int i=0;i<n;i++) scanf("%d",&a[i]); flag=sum=0; DFS(0); if(!flag) printf("NO\n"); } return 0; }