#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int a[]={0,8,4,12,2,10,6,1,9,5,13,3,11,7};
int b[50],i,j,n,ls[50];
n=sizeof(a)/sizeof(a[0]);
int maxlen=0,end=-1;
b[0]=-1;
for(i=0;i<n;i++)
{
ls[i]=1;
for(j=0;j<i;j++)
{
if(a[i]>a[j] && ls[i]<ls[j]+1)
{
ls[i]=ls[j]+1;
b[i]=j;
}
}
if(ls[i]>maxlen)
{
end=i;
maxlen=ls[i];
}
}
cout<<maxlen<<endl;
vector<int> v;
for(int k=end;k!=-1;k=b[k])
{
v.push_back(a[k]);
}
reverse(v.begin(), v.end());
for(int x: v) {
cout << x << ' ';
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCkKewogICAgaW50IGFbXT17MCw4LDQsMTIsMiwxMCw2LDEsOSw1LDEzLDMsMTEsN307CiAgICBpbnQgYls1MF0saSxqLG4sbHNbNTBdOwogICAgbj1zaXplb2YoYSkvc2l6ZW9mKGFbMF0pOwogICAgaW50IG1heGxlbj0wLGVuZD0tMTsKICAgIGJbMF09LTE7CiAgICBmb3IoaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgbHNbaV09MTsKICAgICAgICBmb3Ioaj0wO2o8aTtqKyspCiAgICAgICAgewogICAgICAgICAgICBpZihhW2ldPmFbal0gJiYgbHNbaV08bHNbal0rMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbHNbaV09bHNbal0rMTsKICAgICAgICAgICAgICAgIGJbaV09ajsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihsc1tpXT5tYXhsZW4pCiAgICAgICAgewogICAgICAgICAgICBlbmQ9aTsKICAgICAgICAgICAgbWF4bGVuPWxzW2ldOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0PDxtYXhsZW48PGVuZGw7CiAgICAgdmVjdG9yPGludD4gdjsKICAgIGZvcihpbnQgaz1lbmQ7ayE9LTE7az1iW2tdKQogICAgewogICAgICAgIHYucHVzaF9iYWNrKGFba10pOwogICAgfQogICAgcmV2ZXJzZSh2LmJlZ2luKCksIHYuZW5kKCkpOwogICAgZm9yKGludCB4OiB2KSB7CiAgICAgICAgY291dCA8PCB4IDw8ICcgJzsKICAgIH0KCiAgICAgICAgICAgIHJldHVybiAwOwp9