#if 0
思路:
利用堆排序的思想,由于输入再1~1000之间,所以开个数组number记录
(a[i]==0表示没有第i个数字,否则就有)
然后照这样算,最后从1枚到1000,输出就结束了
另外,再加一个ans计数器,统计真正记录到number数组中的数的个数
题目中的的两个模块是 "去重" 和 "排序"
所以,真正的两个模块是 "统计型存储" 和 "计数"
//另:STL里的set(数学集合) 虽然可以自动化完成这两个操作,
//但还是记得算法原理比较好。毕竟考试不会这么轻易就能上STL
//的(基本上用不到,除了vector还好一点)
#endif
//模块化编程
#include <bits/stdc++.h>
using namespace std;
int n,x,number[1005],ans;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
if(number[x]==0){
number[x];
ans;
}
}
cout<<ans<<endl;
for(int i=1;i<=1000;i++){
if(number[i]>0) cout<<i<<" ";
}
return 0;
}