#include <fstream>
#define dim 1010
using namespace std;
int a[dim];
int d[dim];
int t[dim];
int i,n,u,st,dr,sol=1;
ifstream fin("sclm.in");
ofstream fout("sclm.out");
void afisare (int nod) {
if (t[nod]!=0) afisare(t[nod]);
fout<<nod<<" ";
}
int main() {
fin>>n;
for (i=1;i<=n;i++) {
fin>>a[i];
}
d[++u]=1;
for (i=2;i<=n;i++) {///caut cel mai din dreapta numar mai mic ca a[i]
st=1;
dr=u;
while (st<=dr) {
int mid=(st+dr)/2;
if (a[i]>a[d[mid]]) st=mid+1;
else dr=mid-1;
}
///rezultatul e in d[dr]
t[i]=d[dr];
d[dr+1]=i;
if (dr==u) {
u++;
sol=i;
}
}
fout<<u<<"\n";
afisare (sol);
return 0;
}