#include<stdio.h>
#include<iostream>
using namespace std;
int a[21];
int b[21];//记录取的数的下标
int n,k;
bool dfs(int x,int sum){
if(sum>k) return false;
if(x==n) return sum==k; //搜索到最深处
if(dfs(x+1,sum)) {
b[x]=0;
return true;
}
if(dfs(x+1,sum+a[x])){
b[x]=1; //取,做一个标记
return true;
}
return false;
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}
if(dfs(0,0)) {
cout<<"YES"<<endl;
for(int i=0;i<n;i++){
if(b[i]) {
cout<<a[i];
if(i!=n-1) cout<<" ";
}
}
}else {
cout<<"NO"<<endl;
}
}