#include using namespace std; int main(){ int N; cin >> N; vector a(N); for (int i = 0; i < N; i++) { cin >> a[i]; } vector d(N, 1); vector p(N, -1); for (int i = 0; i < N; i++) { for (int j = 0; j < i; j++) { if (a[j] < a[i] && d[j] + 1 > d[i]) { d[i] = d[j] + 1; p[i] = j; } } } int ans = d[0], pos = 0; for (int i = 1; i < N; i++) { if (d[i] > ans) { ans = d[i]; pos = i; } } vector subseq; while (pos != -1) { subseq.push_back(a[pos]); pos = p[pos]; } reverse(subseq.begin(), subseq.end()); cout << ans << endl; for (int i = 0; i < ans; i++) { if (i != 0) cout << " "; cout << subseq[i]; } cout << endl; return 0; }