#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
const int maxt = 2e5 + 10;
const long long linf = 1e16;
const int inf = 2e9;
const int mod = 1e9 + 7;
const long long lmod = ((long long)1 << 32);
const unsigned long long ulmod = ((unsigned long long)1 << 63);
const long double pi = 3.14159265358979323846264338327950288;
const bool OnlineJudge = 0;
const int as = 2e2;
struct cord {
  long long x, y;
};
struct line {
  long long a, b, c;
};
template <typename Neko_chan>
inline bool maximize(Neko_chan &first, Neko_chan second) {
  if (first < second) {
    first = second;
    return true;
  }
  return false;
}
int n;
int a[maxn];
map<int, int> f;
int kq, last, r;
vector<int> res;
inline void init() {
  cin >> n;
  for (int i = int(1); i <= int(n); i++) cin >> a[i];
}
inline void prepare() {
  for (int i = int(1); i <= int(n); i++) {
    f[a[i]] = f[a[i] - 1] + 1;
    int k = f[a[i]];
    if (k > kq) {
      kq = k;
      r = a[i] - k + 1;
      last = a[i];
    }
  }
}
inline void solve() {
  cout << kq << '\n';
  for (int i = int(1); i <= int(n); i++) {
    if (a[i] == r) {
      cout << i << ' ';
      r++;
    }
    if (r > last) return;
  }
}
inline void file() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  freopen(
      "TEST"
      ".INP",
      "r", stdin);
  freopen(
      "TEST"
      ".OUT",
      "w", stdout);
}
int main() {
  init();
  prepare();
  solve();
  return 0;
}
