#include <cstdio>
using namespace std;
int x[10002],y[10002],z[10002],u[10002],v;
int main()
{
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
int n,max=y[1],k;
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
fscanf(f,"%d",&x[i]);
for(int i=1;i<=n;++i)
{
y[i]=1;
for(int j=1;j<i;++j)
if(x[i]>x[j])
if(y[i]<y[j]+1)
{
y[i]=y[j]+1;
z[i]=j;
}
}
for(int i=1;i<=n;++i)
if(y[i]>max)
{
max=y[i];
k=i;
}
fprintf(g,"%d\n",max);
do
{
++v;
u[v]=x[k];
k=z[k];
}while(k!=0);
for(int i=v;i>=1;--i)
fprintf(g,"%d ",u[i]);
fclose(f);
fclose(g);
return 0;
}