#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, m, i, j, k, ok, minim, maxim;
int v[100001], l[100001], t[100001];
int maximt, maximp, p;
void afisare(int val){
if(val != 0){
afisare(t[val]);
fout << v[val] << " ";
}
else
return;
}
int main(){
fin >> n;
for(i = 1; i <= n; i ++)
fin >> v[i];
l[1] = 1;
t[1] = 0;
for(i = 2; i<= n; i ++){
maxim = 0;
p = 0;
for(j = 1; j < i; j ++){
if(l[j] > maxim && v[j] < v[i]){
maxim = l[j];
p = j;
}
}
l[i] = maxim + 1;
t[i] = p;
if(l[i] > maximt){
maximt = l[i];
maximp = i;
}
}
fout << maximt << endl;
afisare(maximp);
return 0;
}