#include <bits/stdc++.h>
using namespace std;
long long chash[250250][2], mult[250250][2];
char s[250250];
vector<long long> st;
map<long long, vector<long long> > occ;
vector<pair<long long, long long> > reps;
void calc() {
  mult[0][0] = mult[0][1] = 1;
  for (long long i = 1; i < 250250; i++) {
    mult[i][0] = (mult[i - 1][0] * 29) % 1000000021LL;
    mult[i][1] = (mult[i - 1][1] * 31) % 1000000009LL;
  }
}
void compute() {
  chash[0][0] = chash[0][1] = st[0] + 1;
  for (int i = 1; i < (int)st.size(); i++) {
    chash[i][0] =
        ((chash[i - 1][0] * 29) % 1000000021LL + st[i] + 1) % 1000000021LL;
    chash[i][1] =
        ((chash[i - 1][1] * 31) % 1000000009LL + st[i] + 1) % 1000000009LL;
  }
}
pair<long long, long long> substr(long long l, long long r) {
  if (!l) return make_pair(chash[r][0], chash[r][1]);
  long long p1 =
      (chash[r][0] - (chash[l - 1][0] * mult[r - l + 1][0]) % 1000000021LL +
       1000000021LL) %
      1000000021LL;
  long long p2 =
      (chash[r][1] - (chash[l - 1][1] * mult[r - l + 1][1]) % 1000000009LL +
       1000000009LL) %
      1000000009LL;
  return make_pair(p1, p2);
}
bool cmp(pair<long long, long long> a, pair<long long, long long> b) {
  long long lena = a.second - a.first;
  long long lenb = b.second - b.first;
  if (lena == lenb) {
    return a < b;
  }
  return lena < lenb;
}
int main() {
  calc();
  int n;
  long long x;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%lld", &x);
    st.push_back(x);
    occ[x].push_back(i);
  }
  compute();
  for (pair<long long, vector<long long> > opa : occ) {
    int num = opa.first;
    vector<long long> pos = opa.second;
    for (int i = 0; i < pos.size(); i++) {
      for (int j = i + 1; j < pos.size(); j++) {
        int cthulhu = pos[j] - pos[i] - 1;
        if (pos[j] + cthulhu < n &&
            substr(pos[i], pos[j] - 1) == substr(pos[j], pos[j] + cthulhu))
          reps.push_back({pos[i], pos[j] + cthulhu});
      }
    }
  }
  sort(reps.begin(), reps.end(), cmp);
  long long l = 0;
  for (pair<long long, long long> p : reps) {
    if (p.first >= l) {
      l = (p.first + p.second) / 2 + 1;
    }
  }
  printf("%d\n", n - l);
  for (int i = l; i < n; i++) printf("%d ", st[i]);
  return 0;
}
