#include <bits/stdc++.h>
using namespace std;
int arr[100002], org[100002];
map<int, int> mapid;
vector<int> inds[100002];
int idx[100002];
int len[100002][12];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &arr[i]);
    org[i] = arr[i];
    int id = ((int)(mapid).size());
    if (mapid.count(arr[i]))
      id = mapid[arr[i]];
    else
      mapid[arr[i]] = id;
    arr[i] = id;
    idx[i] = ((int)(inds[id]).size());
    inds[id].push_back(i);
  }
  for (int i = n - 2; i >= 0; i -= 1) {
    for (int j = idx[i] - 1; j >= 0; j -= 1) {
      int k = inds[arr[i]][j];
      if (arr[i + 1] == arr[k + 1]) len[k][idx[i]] = len[k + 1][idx[i + 1]] + 1;
    }
  }
  vector<pair<int, int> > rem;
  for (int i = 0; i < n; i++) {
    for (int j = idx[i] + 1; j <= ((int)(inds[arr[i]]).size()) - 1; j += 1) {
      int k = inds[arr[i]][j];
      int dist = k - i - 1;
      if (dist <= len[i][idx[k]]) rem.push_back(make_pair((i), (dist)));
    }
  }
  sort((rem).begin(), (rem).end());
  int encut = -1;
  for (int i = 0; i < ((int)(rem).size()); i++) {
    if (encut >= rem[i].first) continue;
    encut = rem[i].first + rem[i].second;
  }
  cout << n - encut - 1 << endl;
  for (int i = encut + 1; i <= n - 1; i += 1) cout << org[i] << " ";
  return 0;
}
