#include <bits/stdc++.h>
using namespace std;
#define Sonic ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define tests(t) int t; cin >> t; while(t--)
#define F first
#define S second
#define pb push_back
#define eb emplace_back
#define ln cout<<endl;
#define sz(x) int((x).size())
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define read(x) for(auto &el : x) cin >> el;
#define reads(s, n) for(int i = 0, x; i < n; ++i) {cin >> x; s.insert(x);}
#define forn(i,n) for(int i=0; i < int(n); ++i)
#define forsn(i, s, n) for (int i = s; i < n; ++i)
#define dforn(i, n) for (int i = n - 1; i >= 0; --i)
#define DBG(x) cout << #x << " = " << x << endl;
#define print(x) for(auto &el : x) {cout << el << " ";} cout<<endl;
#define lw(c, x) int(lower_bound((c).begin(), (c).end(), (x)) - (c).begin())
#define up(c, x) int(upper_bound((c).begin(), (c).end(), (x)) - (c).begin())
#define sino(b) cout<<(b ? "YES\n":"NO\n");
#define syso(x) cout<< (x) <<endl;
#define kill(x) {cout<< (x) <<endl; return;}
typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int,int> pii;
typedef pair<int,pii> piii;
typedef pair<ll,ll> pll;
ll gcd(ll a, ll b){while(b){a%=b; swap(a,b);} return a;} ll lcm(ll a,ll b){return a*b/gcd(a,b);}
int lg2(const int &x) { return 31-__builtin_clz(x);} // int lg2(const ll &x) {return 63-__builtin_clzll(x);}
// Para leer e imprimir .txt
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
const int MAX = 1e5+5;
// int A[MAX];
int dp[MAX];
vector<int> LIS; // PARA Lis_opt
int n;
int lis_opt(vector<int> &A) {
LIS.clear();
for (int i = 0; i < n; i++) {
auto id = lower_bound(LIS.begin(), LIS.end(), A[i]);
if (id == LIS.end()) {
LIS.pb(A[i]);
dp[i] = LIS.size();
}
else {
int idx = id - LIS.begin();
LIS[idx] = A[i];
dp[i] = idx + 1;
}
}
return LIS.size();
}
stack<int> rb;
void build(vector<int> &A) {
int k = LIS.size();
int cur = 1e9;
for (int i = n - 1; i >= 0, k; i--) {
if (A[i] < cur && k == dp[i]) {
cur = A[i];
rb.push(A[i]);
k--;
}
}
}
void solve(){
int x;
vi a;
while (cin>>x) a.pb(x);
n = sz(a);
lis_opt(a);
build(a);
syso(sz(rb))
syso('-')
while (!rb.empty()){syso(rb.top())rb.pop();}
cout << endl;
}
int main(){
Sonic
// tests(t)
solve();
return 0;
}
//"Quiero picha" - Sebastian Nieto 2026
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgU29uaWMgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCksIGNpbi50aWUoMCksIGNvdXQudGllKDApOwojZGVmaW5lIHRlc3RzKHQpIGludCB0OyBjaW4gPj4gdDsgd2hpbGUodC0tKQojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGViIGVtcGxhY2VfYmFjawojZGVmaW5lIGxuIGNvdXQ8PGVuZGw7CiNkZWZpbmUgc3ooeCkgaW50KCh4KS5zaXplKCkpCiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCAoeCkuZW5kKCkKI2RlZmluZSByYWxsKHgpICh4KS5yYmVnaW4oKSwgKHgpLnJlbmQoKQojZGVmaW5lIHJlYWQoeCkgZm9yKGF1dG8gJmVsIDogeCkgY2luID4+IGVsOwojZGVmaW5lIHJlYWRzKHMsIG4pIGZvcihpbnQgaSA9IDAsIHg7IGkgPCBuOyArK2kpIHtjaW4gPj4geDsgcy5pbnNlcnQoeCk7fQojZGVmaW5lIGZvcm4oaSxuKSBmb3IoaW50IGk9MDsgaSA8IGludChuKTsgKytpKQojZGVmaW5lIGZvcnNuKGksIHMsIG4pIGZvciAoaW50IGkgPSBzOyBpIDwgbjsgKytpKQojZGVmaW5lIGRmb3JuKGksIG4pIGZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpCiNkZWZpbmUgREJHKHgpIGNvdXQgPDwgI3ggPDwgIiA9ICIgPDwgeCA8PCBlbmRsOwojZGVmaW5lIHByaW50KHgpIGZvcihhdXRvICZlbCA6IHgpIHtjb3V0IDw8IGVsIDw8ICIgIjt9IGNvdXQ8PGVuZGw7CiNkZWZpbmUgbHcoYywgeCkgaW50KGxvd2VyX2JvdW5kKChjKS5iZWdpbigpLCAoYykuZW5kKCksICh4KSkgLSAoYykuYmVnaW4oKSkKI2RlZmluZSB1cChjLCB4KSBpbnQodXBwZXJfYm91bmQoKGMpLmJlZ2luKCksIChjKS5lbmQoKSwgKHgpKSAtIChjKS5iZWdpbigpKQojZGVmaW5lIHNpbm8oYikgY291dDw8KGIgPyAiWUVTXG4iOiJOT1xuIik7CiNkZWZpbmUgc3lzbyh4KSBjb3V0PDwgKHgpIDw8ZW5kbDsKI2RlZmluZSBraWxsKHgpIHtjb3V0PDwgKHgpIDw8ZW5kbDsgcmV0dXJuO30KdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgdmVjdG9yPGxsPiB2bGw7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiBwaWk7CnR5cGVkZWYgcGFpcjxpbnQscGlpPiBwaWlpOwp0eXBlZGVmIHBhaXI8bGwsbGw+IHBsbDsKbGwgZ2NkKGxsIGEsIGxsIGIpe3doaWxlKGIpe2ElPWI7IHN3YXAoYSxiKTt9IHJldHVybiBhO30gbGwgbGNtKGxsIGEsbGwgYil7cmV0dXJuIGEqYi9nY2QoYSxiKTt9CmludCBsZzIoY29uc3QgaW50ICZ4KSB7IHJldHVybiAzMS1fX2J1aWx0aW5fY2x6KHgpO30gLy8gaW50IGxnMihjb25zdCBsbCAmeCkge3JldHVybiA2My1fX2J1aWx0aW5fY2x6bGwoeCk7fQovLyBQYXJhIGxlZXIgZSBpbXByaW1pciAudHh0Ci8vIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwovLyBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwoKCmNvbnN0IGludCBNQVggPSAxZTUrNTsKLy8gaW50IEFbTUFYXTsKaW50IGRwW01BWF07CnZlY3RvcjxpbnQ+IExJUzsgLy8gUEFSQSBMaXNfb3B0CmludCBuOwoKaW50IGxpc19vcHQodmVjdG9yPGludD4gJkEpIHsKICAgIExJUy5jbGVhcigpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBhdXRvIGlkID0gbG93ZXJfYm91bmQoTElTLmJlZ2luKCksIExJUy5lbmQoKSwgQVtpXSk7CiAgICAgICAgaWYgKGlkID09IExJUy5lbmQoKSkgewogICAgICAgICAgICBMSVMucGIoQVtpXSk7CiAgICAgICAgICAgIGRwW2ldID0gTElTLnNpemUoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGludCBpZHggPSBpZCAtIExJUy5iZWdpbigpOwogICAgICAgICAgICBMSVNbaWR4XSA9IEFbaV07CiAgICAgICAgICAgIGRwW2ldID0gaWR4ICsgMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gTElTLnNpemUoKTsKfQoKc3RhY2s8aW50PiByYjsKdm9pZCBidWlsZCh2ZWN0b3I8aW50PiAmQSkgewogICAgaW50IGsgPSBMSVMuc2l6ZSgpOwogICAgaW50IGN1ciA9IDFlOTsKICAgIGZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAwLCBrOyBpLS0pIHsKICAgICAgICBpZiAoQVtpXSA8IGN1ciAmJiBrID09IGRwW2ldKSB7CiAgICAgICAgICAgIGN1ciA9IEFbaV07CiAgICAgICAgICAgIHJiLnB1c2goQVtpXSk7CiAgICAgICAgICAgIGstLTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgc29sdmUoKXsKICAgIGludCB4OwogICAgdmkgYTsKICAgIHdoaWxlIChjaW4+PngpIGEucGIoeCk7CiAgICBuID0gc3ooYSk7CiAgICBsaXNfb3B0KGEpOwogICAgYnVpbGQoYSk7CiAgICBzeXNvKHN6KHJiKSkKICAgIHN5c28oJy0nKQogICAgd2hpbGUgKCFyYi5lbXB0eSgpKXtzeXNvKHJiLnRvcCgpKXJiLnBvcCgpO30KICAgIGNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKXsKICAgIFNvbmljCiAgICAvLyB0ZXN0cyh0KQogICAgICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQovLyJRdWllcm8gcGljaGEiIC0gU2ViYXN0aWFuIE5pZXRvIDIwMjY=