#include<bits/stdc++.h>
using namespace std;
vector<int> v[5];
int n,a[10005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
v[a[i]%3].push_back(a[i]);
}
int c0=v[0].size(),c1=v[1].size(),c2=v[2].size();
if(n==2){
if((a[1]+a[2])%3==0){
cout<<"No";
}
else{
cout<<"Yes";
cout<<"\n";
cout<<a[1]<<" "<<a[2];
}
return 0;
}
if(n==1){
if(a[1]%3==0) cout<<"No";
else cout<<a[1];
}
if(c0-1>c1+c2){
cout<<"No";
return 0;
}
cout<<"Yes\n";
if(c0==1){
for(int i=0;i<c1;i++) cout<<v[1][i]<<" ";
cout<<v[0][0]<<" ";
for(int i=0;i<c2;i++) cout<<v[2][i]<<" ";
}else{
int pos1=0,pos2=0,pos0=0;
int k1=c0/2;
int k2=c0-1-c0/2;
int s1=c1-k1+1;
int s2=c2-k2+1;
if(pos0<c0) cout<<v[0][pos0++]<<" ";
for(int i=1;i<=s1;i++) if(pos1<c1) cout<<v[1][pos1++]<<" ";
if(pos0<c0) cout<<v[0][pos0++]<<" ";
for(int i=1;i<=s2;i++) if(pos2<c2) cout<<v[2][pos2++]<<" ";
if(pos0<c0) cout<<v[0][pos0++]<<" ";
while(pos1<c1&&pos2<c2&&pos0<c0){
if(pos1<c1&&pos2<c2&&pos0<c0) cout<<v[1][pos1++]<<" ";
if(pos1<c1&&pos2<c2&&pos0<c0) cout<<v[0][pos0++]<<" ";
if(pos1<c1&&pos2<c2&&pos0<c0) cout<<v[2][pos2++]<<" ";
if(pos1<c1&&pos2<c2&&pos0<c0) cout<<v[0][pos0++]<<" ";
}
}
return 0;
}