#include <bits/stdc++.h>
using namespace std;
struct hh {
  int p, w;
  bool operator<(hh x) const {
    if (w == x.w) return p < x.p;
    return w < x.w;
  }
} sk[100005];
int a[100005], b[100005], w[100005][11], r[100005], id[100005], n;
long long hs1[100005], pw1[100005], hs2[100005], pw2[100005];
bool check(int x, int y) {
  int tp = 2 * y - x - 1;
  if (tp > n) return 0;
  return (((hs1[y - 1] - hs1[x - 1] * pw1[y - x]) % 1000000013 + 1000000013) %
              1000000013 ==
          ((hs1[tp] - hs1[y - 1] * pw1[tp - y + 1]) % 1000000013 + 1000000013) %
              1000000013) &&
         (((hs2[y - 1] - hs2[x - 1] * pw2[y - x]) % 1000000009 + 1000000009) %
              1000000009 ==
          ((hs2[tp] - hs2[y - 1] * pw2[tp - y + 1]) % 1000000009 + 1000000009) %
              1000000009);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]), b[i] = a[i];
  sort(b + 1, b + n + 1);
  int cnt = unique(b + 1, b + n + 1) - b - 1;
  for (int i = 1; i <= n; ++i) a[i] = lower_bound(b + 1, b + cnt + 1, a[i]) - b;
  for (int i = 1; i <= n; ++i)
    hs1[i] = (hs1[i - 1] * 92595533 + a[i]) % 1000000013,
    hs2[i] = (hs2[i - 1] * 92595523 + a[i]) % 1000000009;
  pw1[0] = pw2[0] = 1;
  for (int i = 1; i <= n; ++i)
    pw1[i] = pw1[i - 1] * 92595533 % 1000000013,
    pw2[i] = pw2[i - 1] * 92595523 % 1000000009;
  for (int i = 1; i <= n; ++i) w[a[i]][++r[a[i]]] = i, id[i] = r[a[i]];
  int tot = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = id[i] + 1; j <= r[a[i]]; ++j)
      if (check(i, w[a[i]][j])) {
        sk[++tot] = (hh){i, w[a[i]][j] - i};
        break;
      }
  sort(sk + 1, sk + tot + 1);
  int w = 1;
  for (int i = 1; i <= tot; ++i) {
    if (sk[i].p < w) continue;
    w = max(w, sk[i].w + sk[i].p);
  }
  printf("%d\n", n - w + 1);
  for (int i = w; i <= n; ++i) printf("%d ", b[a[i]]);
}
