#include <fstream>
#define nmax 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,contor;
int sir[nmax],lg[nmax],poz[nmax];
void Citire()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>sir[i];
}
void Rezolva()
{
int i,j;
lg[n]=1;
poz[n]=-1;
for(i=n-1; i>0; i--)
for(lg[i]=1, poz[i]=-1, j=i+1; j<=n; j++)
if(sir[i] < sir[j] && lg[i] < lg[j]+1)
{
lg[i]=lg[j]+1;
poz[i]=j;
}
}
void Afisare()
{
int i,max=lg[1],pozmax;
for(i=2;i<=n;i++)
if(lg[i]>max) { max=lg[i]; pozmax=i; }
fout<<max<<'\n';
for(i=pozmax; i!=-1; i=poz[i])
fout<<sir[i]<<' ';
fout<<'\n';
}
int main()
{
Citire();
Rezolva();
Afisare();
return 0;
}