/*
* author : lx_lovin
*/
#include<bits/stdc++.h>
using namespace std;
int main()
{ ios::sync_with_stdio(0);
cin.tie(0);
long si;cin>>si;
long x,cost=0;
map<long,int> M;
for(long i=0;i<si;i++){
cin>>x;
M[x]++;
}
cost = (long)(si/2) - M.size();
if(cost<0)cost=0;
map<long,int> Ans;
for(auto x:M){
Ans[x.first]++;
M[x.first]--;
if(Ans.size()==(int)si/2){
break;
}
}
map<long,int>::iterator it = M.begin();
long k=0;
while((int)Ans.size() < (int)si/2){
if(Ans[k]==0){
Ans[k]++;
}else{
k++;
}
}
while(it!=M.end()){
it++;
}
long temp = cost;
while(temp--){
if(it->second > 0){
it->second--;
}else{
it--;
}
}
it = M.begin();
cout<<cost<<endl;
for(auto x:Ans){
cout<<x.first<<" ";
}
long hui=0;
while(1){
if(it->second>0){
cout<<it->first<<" ";
it->second--;
hui++;
if(hui>=(int)si/2)break;
}else{
it++;
}
}
cout<<endl;
return 0;
}
LyoKKiBhdXRob3IgOiBseF9sb3ZpbgoqLwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSAKeyAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGxvbmcgc2k7Y2luPj5zaTsKICAgIGxvbmcgeCxjb3N0PTA7CiAgICBtYXA8bG9uZyxpbnQ+IE07CiAgICBmb3IobG9uZyBpPTA7aTxzaTtpKyspewogICAgICAgIGNpbj4+eDsKICAgICAgICBNW3hdKys7CiAgICB9CiAgICBjb3N0ID0gKGxvbmcpKHNpLzIpIC0gTS5zaXplKCk7CiAgICBpZihjb3N0PDApY29zdD0wOwogICAgbWFwPGxvbmcsaW50PiBBbnM7CiAgICBmb3IoYXV0byB4Ok0pewogICAgICAgIEFuc1t4LmZpcnN0XSsrOwogICAgICAgIE1beC5maXJzdF0tLTsKICAgICAgICBpZihBbnMuc2l6ZSgpPT0oaW50KXNpLzIpewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBtYXA8bG9uZyxpbnQ+OjppdGVyYXRvciBpdCA9IE0uYmVnaW4oKTsKICAgIGxvbmcgaz0wOwogICAgd2hpbGUoKGludClBbnMuc2l6ZSgpIDwgKGludClzaS8yKXsKICAgICAgICBpZihBbnNba109PTApewogICAgICAgICAgICBBbnNba10rKzsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgaysrOwogICAgICAgIH0KICAgIH0KICAgIHdoaWxlKGl0IT1NLmVuZCgpKXsKICAgICAgICBpdCsrOwogICAgfQogICAgbG9uZyB0ZW1wID0gY29zdDsKICAgIHdoaWxlKHRlbXAtLSl7CiAgICAgICAgaWYoaXQtPnNlY29uZCA+IDApewogICAgICAgICAgICBpdC0+c2Vjb25kLS07CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGl0LS07CiAgICAgICAgfQogICAgfQogICAgaXQgPSBNLmJlZ2luKCk7CiAgICBjb3V0PDxjb3N0PDxlbmRsOwogICAgZm9yKGF1dG8geDpBbnMpewogICAgICAgIGNvdXQ8PHguZmlyc3Q8PCIgIjsKICAgIH0KICAgIGxvbmcgaHVpPTA7CiAgICB3aGlsZSgxKXsKICAgICAgICBpZihpdC0+c2Vjb25kPjApewogICAgICAgICAgICBjb3V0PDxpdC0+Zmlyc3Q8PCIgIjsKICAgICAgICAgICAgaXQtPnNlY29uZC0tOwogICAgICAgICAgICAgICAgICAgICAgICBodWkrKzsKICAgICAgICAgICAgaWYoaHVpPj0oaW50KXNpLzIpYnJlYWs7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGl0Kys7CiAgICAgICAgfQogICAgfQogICAgY291dDw8ZW5kbDsKICAgIHJldHVybiAwOwp9