#include <bits/stdc++.h>
using namespace std;
using LL = long long;
constexpr int N = 1e5 + 5;
int n;
int in[N];
int sorted[N];
int p1[N], p2[N];
int hash1[N], hash2[N];
bool is_repeat(int x, int y) {
  int len = y - x;
  if (y + len > n) return 0;
  int y1 = hash1[y + len] - hash1[y] * p1[len];
  int x1 = hash1[y] - hash1[x] * p1[len];
  if (x1 != y1) return 0;
  int y2 = hash2[y + len] - hash2[y] * p2[len];
  int x2 = hash2[y] - hash2[x] * p2[len];
  return x2 == y2;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> in[i];
  p1[0] = p2[0] = 1;
  for (int i = 1; i <= n; i++) {
    p1[i] = p1[i - 1] * 1337;
    p2[i] = p2[i - 1] * 911382323;
    hash1[i] = hash1[i - 1] * 1337 + in[i - 1];
    hash2[i] = hash2[i - 1] * 911382323 + in[i - 1];
  }
  iota(sorted, sorted + n, 0);
  sort(sorted, sorted + n, [](int x, int y) {
    if (in[x] != in[y]) return in[x] < in[y];
    return x < y;
  });
  vector<pair<int, int>> repeats;
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n && in[sorted[i]] == in[sorted[j]]; j++) {
      if (is_repeat(sorted[i], sorted[j])) {
        repeats.emplace_back(sorted[j] - sorted[i], sorted[i]);
      }
    }
  }
  sort(begin(repeats), end(repeats));
  int left = 0;
  for (auto p : repeats) {
    if (p.second >= left) {
      left = p.second + p.first;
    }
  }
  cout << n - left << "\n";
  for (int i = left; i < n; i++) cout << in[i] << ' ';
}
