#include <fstream>
#include <algorithm>
#define NMAX 100001
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[NMAX], x[NMAX], tata[NMAX], i, j, n, cont=0, poz;
void afisare(int poz)
{
if (tata[poz]==0) g<<v[poz]<<" ";
else
{
g<<v[poz]<<" ";
afisare(tata[poz]);
}
}
int main()
{
f>>n;
for (i=1; i<=n; ++i)
f>>v[i];
int maxim=-1;
x[n]=1;
for (i=n-1; i>=1; --i)
{
x[i]=1;
for (j=i+1; j<=n; ++j)
if (v[i]<v[j] && x[i]<x[j]+1)
{
x[i]=x[j]+1;
tata[i]=j;
}
if (x[i]>maxim)
{
poz=i;
maxim=x[i];
}
}
g<<maxim<<'\n';
afisare(poz);
return 0;
}