#include <bits/stdc++.h>
using namespace std;
struct Node {
  int pos;
  Node *nxt;
} * ptr[100010], pool[100010], *TAIL = pool;
int n, a[100010], b[100010], tail;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]), b[++tail] = a[i];
  sort(b + 1, b + tail + 1);
  tail = unique(b + 1, b + tail + 1) - 1 - b;
  for (int i = 1; i <= n; i++)
    a[i] = lower_bound(b + 1, b + tail + 1, a[i]) - b;
  for (int i = n; i >= 1; i--)
    TAIL->nxt = ptr[a[i]], TAIL->pos = i, ptr[a[i]] = TAIL++;
  int i, ans = 1;
  for (i = 1; i <= n; i++) {
    ptr[a[i]] = ptr[a[i]]->nxt;
    for (Node *p = ptr[a[i]]; p; p = p->nxt) {
      int j = i + 1, k = p->pos + 1;
      while (a[j] == a[k] && j < p->pos) j++, k++;
      if (j == p->pos) i = p->pos - 1, ans = p->pos;
    }
  }
  printf("%d\n", n - ans + 1);
  for (int i = ans; i <= n; i++) printf("%d ", b[a[i]]);
  puts("");
  return 0;
}
