#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n, num; int a[1001] = { 0 };
int lis[1001] = { 0 }; int index[1001] = { 0 };
vector<int> ans;
int main(void) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &num);
a[i] = num;
}
lis[1] = a[1]; int d = 1;//첫번째 항은 미리 넣어논다.
for (int i = 2; i <= n; i++) {
int k = 0;
while (a[i] <= lis[d - k]) {
k++;
}
lis[d - k + 1] = a[i];
index[a[i]] = lis[d - k];
if (k == 0) {//추가만 되었으면 d를 하나 높여준다.
d++;
}
}
for (int i = 1; i <= n; i++) {
cout << lis[i] << " ";
}
cout << endl;
int maxx = 0;
for (int i = 1; i <= n; i++) {
if (lis[i] > maxx) {
maxx = lis[i];
}
}
int k = maxx;
while (k != 0) {
//cout << k << " ";
ans.push_back(k);
k = index[k];
}
sort(ans.begin(), ans.end());
//cout << ans.size() << endl;
printf("%d", ans.size());
/*for (int i = 0; i < ans.size(); i++) {
cout << ans[i] << " ";
}*/
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbiwgbnVtOyBpbnQgYVsxMDAxXSA9IHsgMCB9OwppbnQgbGlzWzEwMDFdID0geyAwIH07IGludCBpbmRleFsxMDAxXSA9IHsgMCB9Owp2ZWN0b3I8aW50PiBhbnM7CmludCBtYWluKHZvaWQpIHsKCXNjYW5mKCIlZCIsICZuKTsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCXNjYW5mKCIlZCIsICZudW0pOwoJCWFbaV0gPSBudW07Cgl9CglsaXNbMV0gPSBhWzFdOyBpbnQgZCA9IDE7Ly/ssqvrsojsp7gg7ZWt7J2AIOuvuOumrCDrhKPslrTrhbzri6QuCglmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpKyspIHsKCQlpbnQgayA9IDA7CgkJd2hpbGUgKGFbaV0gPD0gbGlzW2QgLSBrXSkgewoJCQlrKys7CgkJfQoJCWxpc1tkIC0gayArIDFdID0gYVtpXTsKCQlpbmRleFthW2ldXSA9IGxpc1tkIC0ga107CgkJaWYgKGsgPT0gMCkgey8v7LaU6rCA66eMIOuQmOyXiOycvOuptCBk66W8IO2VmOuCmCDrhpLsl6zspIDri6QuCgkJCWQrKzsKCQl9Cgl9Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQljb3V0IDw8IGxpc1tpXSA8PCAiICI7Cgl9Cgljb3V0IDw8IGVuZGw7CglpbnQgbWF4eCA9IDA7Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlpZiAobGlzW2ldID4gbWF4eCkgewoJCQltYXh4ID0gbGlzW2ldOwoJCX0KCX0KCWludCBrID0gbWF4eDsKCXdoaWxlIChrICE9IDApIHsKCQkvL2NvdXQgPDwgayA8PCAiICI7CgkJYW5zLnB1c2hfYmFjayhrKTsKCQlrID0gaW5kZXhba107Cgl9Cglzb3J0KGFucy5iZWdpbigpLCBhbnMuZW5kKCkpOwoJLy9jb3V0IDw8IGFucy5zaXplKCkgPDwgZW5kbDsKCXByaW50ZigiJWQiLCBhbnMuc2l6ZSgpKTsKCS8qZm9yIChpbnQgaSA9IDA7IGkgPCBhbnMuc2l6ZSgpOyBpKyspIHsKCQljb3V0IDw8IGFuc1tpXSA8PCAiICI7Cgl9Ki8KCgoKCQoJcmV0dXJuIDA7Cn0=