#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
struct hash_pair {
  template <class T1, class T2>
  size_t operator()(const pair<T1, T2>& p) const {
    auto hash1 = hash<T1>{}(p.first);
    auto hash2 = hash<T2>{}(p.second);
    return hash1 ^ hash2;
  }
};
unordered_map<pair<int, int>, int, hash_pair> map_with_pair{};
priority_queue<int, vector<int>, greater<int> > pq_desc;
const int N = 2 * 1e5 + 1;
long long int n;
long long int a[N];
long long int dp[N][3];
vector<long long int> ans(N);
void solve() {
  map<int, int> idx{};
  long long int mx_val = -1, mx_idx = n - 1;
  for (int i = n - 1; n - 1 < -1 ? i < -1 : i > -1;
       n - 1 < -1 ? i += 1 : i -= 1) {
    dp[i][2] = 0;
    int id = -1;
    auto it = idx.find(a[i] + 1);
    idx[a[i]] = i;
    if (it != idx.end()) {
      id = it->second;
    }
    if (id == -1) continue;
    dp[i][0] = i;
    dp[i][1] = it->second;
    dp[i][2] = 1 + dp[it->second][2];
    if (dp[i][2] >= mx_val) {
      mx_val = dp[i][2];
      mx_idx = i;
    }
  }
  long long int id = mx_idx;
  long long int ix = 0;
  while (id < n && id != -1) {
    ans[ix++] = (id + 1);
    if (dp[id][0] == -1) {
      break;
    }
    id = dp[id][1];
  }
  cout << ix << "\n";
  for (int i = 0; i < ix; i++) cout << ans[i] << " ";
  cout << "\n";
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  memset(dp, -1, sizeof(dp));
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  solve();
  return 0;
}
