#include <bits/stdc++.h>
using namespace std;
const int N = 5000 + 20;
const int maxn = 2e5 + 20;
const int mod = 998244353;
int cnt, head[maxn], pos[maxn];
double Max(double a, double b) { return a > b ? a : b; }
int min(int a, int b) { return a < b ? a : b; }
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a * b / gcd(a, b); }
void swap(int &x, int &y) { x ^= y, y ^= x, x ^= y; }
int lowbit(int x) { return (x) & (-x); }
long long ksm(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = (res * a) % mod;
    b >>= 1, a = a * a % mod;
  }
  return res % mod;
}
int read(int &v) {
  int k = 1;
  v = 0;
  int c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') k = 0;
    c = getchar();
  }
  while (c >= '0' && c <= '9')
    v = (v << 3) + (v << 1) + (c - 48), c = getchar();
  if (k == 0) v = -v;
  return c;
}
int sta[maxn], pre[maxn];
vector<int> f;
map<int, int> dp;
int main() {
  int n;
  read(n);
  for (int i = 1; i <= n; i++) read(sta[i]), pre[i] = -1;
  for (int i = 1; i <= n; i++) dp[sta[i]] = dp[sta[i] - 1] + 1;
  int ans = 0, k;
  for (int i = 1; i <= n; i++) {
    if (dp[sta[i]] > ans) ans = dp[sta[i]], k = i;
  }
  printf("%d\n", ans);
  int x = sta[k];
  for (int i = n; i >= 1; i--) {
    if (sta[i] == x) f.push_back(i), x--;
  }
  sort(f.begin(), f.end());
  for (int i = 0; i < f.size(); i++) printf("%d ", f[i]);
  puts("");
}
