//为什么第一题提交一直说答案错误 这样输出不对吗?
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Main {
	public static void main(String[] args) throws IOException {
		try {
			Scanner sc = new Scanner(new File("random.in"));
			Set<Integer> set = new TreeSet<>();
			List list = new ArrayList<>();
			int N = sc.nextInt();
			for (int i = 0; i < N; i++) {
				set.add(sc.nextInt());
			}
//			for (int i = 0; i < set.size(); i++) {
//				list.add(set.)
//			}
//			Collections.sort(set);
//			Arrays.sort(set.toArray());
			File file = new File("random.out");
//			if (!file.exists()) {
//				file.createNewFile();
//			}
			FileOutputStream fs = new FileOutputStream(file);
			StringBuilder sb = new StringBuilder();
			sb.append(set.size() + "\n");
			Iterator it = set.iterator();
			sb.append(it.next());
//			System.out.print(it.next());
			while (it.hasNext()) {
//				System.out.print(" "+it.next());
				sb.append(" " + it.next());				
			}
			fs.write(sb.toString().getBytes());
			fs.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}
		
	}
}