//#include <iostream>
#include <fstream>
using namespace std;
int maxim[100100], pre[10010], suc[100100], v[100100];
int main() {
ifstream in("scmax.in");
ofstream out("scmax.out");
int n, i, j, maxi;
in >> n;
for (i = 0; i < n; i++)
in >> v[i];
maxim[0] = 1;
for (i = 1; i < n; i++) {
maxim[i] = 1;
for (j = 0; j < i; j++) {
if (v[j] < v[i]) {
if (maxim[j] + 1 > maxim[i]) {
maxim[i] = maxim[j] + 1;
pre[i] = j;
}
}
}
if (maxim[i] > maxi)
maxi = i;
}
out << maxim[maxi] << "\n";
int k = 0;
while (maxi) {
suc[maxi] = k;
k = maxi;
maxi = pre[maxi];
}
while (k) {
out << v[k] << " ";
k = suc[k];
}
in.close();
out.close();
return 0;
}