#include <iostream>
#include <stack>
using namespace std;
int arr[1001];
int dp[1001];
stack<int> st;
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> arr[i];
}
int max = 0;
for (int i = 1; i <= n; i++) {
dp[i]=1;
for (int j = 1; j < i; j++) {
if (arr[i] > arr[j] && dp[j]+1>dp[i]) {
dp[i] = dp[j] + 1;
if (max < dp[i]) max = dp[i];
}
}
}
for (int i = n; i > 0; i--) {
if (max == 0) break;
if (dp[i] == max) {
st.push( arr[i]);
max--;
}
}
int stsize = st.size();
cout << stsize << '\n';
for (int i = 0; i < stsize; i++) {
cout << st.top() << ' ';
st.pop();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBhcnJbMTAwMV07CmludCBkcFsxMDAxXTsKc3RhY2s8aW50PiBzdDsKaW50IG1haW4oKSB7CglpbnQgbjsKCWNpbiA+PiBuOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJY2luID4+IGFycltpXTsKCX0KCWludCBtYXggPSAwOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgZHBbaV09MTsKCQlmb3IgKGludCBqID0gMTsgaiA8IGk7IGorKykgewoJCQlpZiAoYXJyW2ldID4gYXJyW2pdICYmIGRwW2pdKzE+ZHBbaV0pIHsKCQkJCWRwW2ldID0gZHBbal0gKyAxOwoJCQkJaWYgKG1heCA8IGRwW2ldKSBtYXggPSBkcFtpXTsKCQkJfQoJCX0KCX0KCWZvciAoaW50IGkgPSBuOyBpID4gMDsgaS0tKSB7CgkJaWYgKG1heCA9PSAwKSBicmVhazsKCQlpZiAoZHBbaV0gPT0gbWF4KSB7CgkJCXN0LnB1c2goIGFycltpXSk7CgkJCW1heC0tOwoJCX0KCX0KCWludCBzdHNpemUgPSBzdC5zaXplKCk7Cgljb3V0IDw8IHN0c2l6ZSA8PCAnXG4nOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBzdHNpemU7IGkrKykgewoJCWNvdXQgPDwgc3QudG9wKCkgPDwgJyAnOwoJCXN0LnBvcCgpOwoJfQoJcmV0dXJuIDA7Cn0=