#include <bits/stdc++.h>
using namespace std;
int n;
int a[100001];
int sorted[100001];
int cmp(int x, int y) {
  if (a[x] != a[y]) return a[x] < a[y];
  return x < y;
}
int p1[100001], p2[100001];
int hsh1[100001], hsh2[100001];
inline int is_repeat(int x, int y) {
  int d = y - x;
  if (y + d > n) return 0;
  int y1 = hsh1[y + d] - hsh1[y] * p1[d];
  int x1 = hsh1[y] - hsh1[x] * p1[d];
  if (y1 != x1) return 0;
  int y2 = hsh2[y + d] - hsh2[y] * p2[d];
  int x2 = hsh2[y] - hsh2[x] * p2[d];
  return y2 == x2;
}
int main(void) {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
  p1[0] = p2[0] = 1;
  hsh1[0] = hsh2[0] = 0;
  for (int i = 1; i <= n; ++i) {
    p1[i] = p1[i - 1] * 1337;
    p2[i] = p2[i - 1] * 914846374;
    hsh1[i] = hsh1[i - 1] * 1337 + a[i - 1];
    hsh2[i] = hsh2[i - 1] * 914846374 + a[i - 1];
  }
  for (int i = 0; i < n; ++i) sorted[i] = i;
  sort(sorted, sorted + n, cmp);
  vector<pair<int, int> > repeats;
  for (int i = 0; i < n; ++i)
    for (int j = i + 1; j < n && a[sorted[i]] == a[sorted[j]]; ++j)
      if (is_repeat(sorted[i], sorted[j]))
        repeats.push_back(pair<int, int>(sorted[j] - sorted[i], sorted[i]));
  sort(repeats.begin(), repeats.end());
  int left = 0;
  for (vector<pair<int, int> >::iterator it = repeats.begin();
       it != repeats.end(); ++it)
    if (it->second >= left) left = it->second + it->first;
  printf("%d\n", n - left);
  for (int i = left; i < n; ++i) printf("%d%c", a[i], i + 1 == n ? '\n' : ' ');
  return 0;
}
