#include <bits/stdc++.h>
#define maxn 100020
using namespace std;
int v[maxn],dp[maxn],t[maxn];
vector <int > a;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
int n,best=0,besti;
scanf("%d",&n);
for (int i=1 ; i <=n ; ++i)
{
scanf("%d",&v[i]);
dp[i]=1;
for (int j=1; j<i ; ++j)
if (v[j]<v[i] && dp[j]+1>dp[i])
{
dp[i]=dp[j]+1;
t[i]=j;
}
if (dp[i]>best)
{
best=dp[i];
besti=i;
}
}
printf("%d\n",best);
while (best--)
{
a.push_back(besti);
besti=t[besti];
}
reverse(a.begin(),a.end());
for (auto it: a)
printf("%d ",v[it]);
return 0;
}