#include<fstream>
using namespace std;
int n, i, j, maxim, k, p, maxim1, p1;
int v[100001], t[100001], L[100001];
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void drum(int p1){
if(p1 != 0){
drum(t[p1]);
fout<< v[p1] <<" ";
}
}
int main(){
fin>> n;
for(i = 1; i <= n; i++){
fin>> v[i];
}
L[1] = 1;
for(i = 2; i <= n; i++){
maxim = 0;
for(j = 1; j < i; j++){
if(v[i] > v[j] && L[j] > maxim){
maxim = L[j];
p = j;
}
}
if(maxim != 0){
t[i] = p;
}
L[i] = maxim + 1;
if(L[i] > maxim1){
maxim1 = L[i];
p1 = i;
}
}
fout<< maxim1 <<"\n";
drum(p1);
return 0;
}