#include <cstdio>
#include <vector>
#include <algorithm>
std::vector<int> A, lis, lis_pos, pos_prev;
int last_pos;
void print_prev(int pos) {
if (pos != pos_prev[pos])
print_prev(pos_prev[pos]);
printf("%d ", A[pos]);
}
int main() {
int x;
for (int pos = 0; scanf("%d", &x) == 1; ++pos) {
A.push_back(x);
pos_prev.push_back(pos);
if (lis.size() == 0 or lis.back() < x) {
lis.push_back(x);
lis_pos.push_back(pos);
if (lis.size() > 1)
pos_prev[pos] = lis_pos[lis.size()-2];
last_pos = pos;
} else {
auto it = std::lower_bound(lis.begin(), lis.end(), x);
size_t pos_replace = it - lis.begin();
lis[pos_replace] = x;
lis_pos[pos_replace] = pos;
if (pos_replace > 0)
pos_prev[pos] = lis_pos[pos_replace-1];
if (pos_replace == lis.size()-1)
last_pos = pos;
}
}
print_prev(last_pos);
printf("\n");
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnN0ZDo6dmVjdG9yPGludD4gQSwgbGlzLCBsaXNfcG9zLCBwb3NfcHJldjsKaW50IGxhc3RfcG9zOwp2b2lkIHByaW50X3ByZXYoaW50IHBvcykgewogICAgaWYgKHBvcyAhPSBwb3NfcHJldltwb3NdKQogICAgICAgIHByaW50X3ByZXYocG9zX3ByZXZbcG9zXSk7CiAgICBwcmludGYoIiVkICIsIEFbcG9zXSk7Cn0KCmludCBtYWluKCkgewogICAgaW50IHg7CiAgICBmb3IgKGludCBwb3MgPSAwOyBzY2FuZigiJWQiLCAmeCkgPT0gMTsgKytwb3MpIHsKICAgICAgICBBLnB1c2hfYmFjayh4KTsKICAgICAgICBwb3NfcHJldi5wdXNoX2JhY2socG9zKTsKICAgICAgICBpZiAobGlzLnNpemUoKSA9PSAwIG9yIGxpcy5iYWNrKCkgPCB4KSB7CiAgICAgICAgICAgIGxpcy5wdXNoX2JhY2soeCk7CiAgICAgICAgICAgIGxpc19wb3MucHVzaF9iYWNrKHBvcyk7CiAgICAgICAgICAgIGlmIChsaXMuc2l6ZSgpID4gMSkKICAgICAgICAgICAgICAgIHBvc19wcmV2W3Bvc10gPSBsaXNfcG9zW2xpcy5zaXplKCktMl07CiAgICAgICAgICAgIGxhc3RfcG9zID0gcG9zOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGF1dG8gaXQgPSBzdGQ6Omxvd2VyX2JvdW5kKGxpcy5iZWdpbigpLCBsaXMuZW5kKCksIHgpOwogICAgICAgICAgICBzaXplX3QgcG9zX3JlcGxhY2UgPSBpdCAtIGxpcy5iZWdpbigpOwogICAgICAgICAgICBsaXNbcG9zX3JlcGxhY2VdID0geDsKICAgICAgICAgICAgbGlzX3Bvc1twb3NfcmVwbGFjZV0gPSBwb3M7CiAgICAgICAgICAgIGlmIChwb3NfcmVwbGFjZSA+IDApCiAgICAgICAgICAgICAgICBwb3NfcHJldltwb3NdID0gbGlzX3Bvc1twb3NfcmVwbGFjZS0xXTsKICAgICAgICAgICAgaWYgKHBvc19yZXBsYWNlID09IGxpcy5zaXplKCktMSkKICAgICAgICAgICAgICAgIGxhc3RfcG9zID0gcG9zOwogICAgICAgIH0KICAgIH0KCiAgICBwcmludF9wcmV2KGxhc3RfcG9zKTsKICAgIHByaW50ZigiXG4iKTsKCiAgICByZXR1cm4gMDsKfQo=