#P0796. 公告留新版

公告留新版

题目描述

训练营的公告墙上贴着一排便签,每张便签都有一个编号。

有些编号会出现很多次,表示同一条通知被老师更新了好几版。对于同一个编号,只有最后贴上去的那一张才是最新版,前面旧版本都应该被拿掉。

现在从左到右给出公告墙上所有便签的编号。请你整理公告墙:

  • 每个编号只保留最后一次出现的那张便签;
  • 被保留下来的便签仍然按照原来在公告墙上的左右顺序排列;
  • 不要改变任何便签之间的相对顺序。

请输出整理后还剩下哪些便签。

输入格式

第一行输入一个整数 n,表示便签数量。

第二行输入 n 个整数 a_i,表示从左到右每张便签的编号。

输出格式

第一行输出一个整数 x,表示整理后剩下的便签数量。

第二行输出 x 个整数,表示整理后的便签编号。

样例 1

6
1 5 5 1 6 1
3
5 6 1

样例 2

5
2 4 2 4 4
2
2 4

样例说明

样例 1 中:

  • 编号 1 最后一次出现在第 6 个位置;
  • 编号 5 最后一次出现在第 3 个位置;
  • 编号 6 只出现了一次。

所以整理后从左到右为:

5 6 1

数据范围

  • 对于 60% 的数据,1 <= n <= 5000
  • 对于 100% 的数据,1 <= n <= 100000,1 <= a_i <= n