#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main() {
ifstream in;
ofstream out;
in.open("scmax.in");
out.open("scmax.out");
vector<int> v;
int n;
in >> n;
// cout<<n<<"\n";
for (int i = 0; i < n; i++) {
int x;
in >> x;
v.push_back(x);
}
vector<int> dp(n, 0);
vector<int> prev(n, 0);
dp[0] = 1;
prev[0] = -1;
int max_idx = 0;
for (int i = 1; i < n; i++) {
int maxi = 0;
prev[i] = -1;
for (int j = 0; j < i; j++) {
if (v[j] < v[i] && dp[j] > maxi)
maxi = dp[j], prev[i] = j;
}
dp[i] = 1 + maxi;
if(dp[i]>dp[max_idx])max_idx=i;
}
out << dp[max_idx] << "\n";
vector<int> res(n, 0);
// res[n - 1] = prev[n - 1];
for (int i = max_idx; i >= 0; i = prev[i]) {
res[i] = v[i];
}
for (int i = 0; i < n; i++) {
if (res[i])
out << res[i] << " ";
}
}