#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  int num[100000];
  while (cin >> n) {
    vector<pair<int, int> > vp;
    for (int i = 0; i < n; i++) {
      cin >> num[i];
      vp.push_back(make_pair(num[i], i));
    }
    sort(vp.begin(), vp.end());
    vector<int> vi[50001];
    for (int i = 0; i <= n / 2; i++) vi[i].clear();
    int idx = 0;
    while (idx < n) {
      int end = idx;
      while (end < n && vp[end].first == vp[idx].first) end++;
      for (int i = idx; i < end; i++) {
        for (int j = i + 1; j < end; j++) {
          if (vp[j].second - vp[i].second > n / 2) continue;
          vi[vp[j].second - vp[i].second].push_back(vp[i].second);
        }
      }
      idx = end;
    }
    int cur = 0;
    for (int i = 0; i < (int)vi[1].size(); i++) cur = max(cur, vi[1][i] + 1);
    for (int i = 2; i <= n / 2; i++) {
      sort(vi[i].begin(), vi[i].end());
      idx = 0;
      while (idx < (int)vi[i].size() && vi[i][idx] < cur) idx++;
      if (idx < (int)vi[i].size()) {
        int cnt = 1, pos = vi[i][idx];
        for (int j = idx + 1; j < (int)vi[i].size(); j++) {
          if (vi[i][j] - cnt == pos) {
            cnt++;
            if (cnt == i) {
              cur = pos + i;
              cnt = 1;
              pos += i;
            }
          } else {
            pos = vi[i][j];
            cnt = 1;
          }
        }
      }
    }
    printf("%d\n", n - cur);
    for (int j = cur; j < n - 1; j++) printf("%d ", num[j]);
    printf("%d\n", num[n - 1]);
  }
}
