#include<cstdlib>#include<iostream>#include<cstdio>#include<cmath>#include<set>#include<cstring>#include <algorithm>#define inf 0x7fffffff#define N 1000#define MIN 1e-11#define M 100#define LL long longusing namespace std;int n,k,h,t,m;int a[N],d[N];int ma[N][N];int dfs(int k){ if(d[k])return d[k]; d[k]=1; for(int i=0;i<n;i++) if(ma[k][i]) d[k]=max(d[k],dfs(i)+1); return d[k];}void print(int k){ printf("%d ",a[k]); for(int i=0;i<n;i++) if(ma[k][i]&&d[k]==d[i]+1) { print(i);break; }}int main(){#ifndef ONLINE_JUDGE freopen("ex.in","r",stdin);#endif//example input://11//3 5 9 1 2 4 8 7 0 6 10 scanf("%d",&n); for(int i=0;i<n;++i) scanf("%d",&a[i]); for(int i=0;i<n;++i) for(int j=i+1;j<n;++j) { if(a[i]<a[j]) ma[i][j]=1; else if(a[i]>a[j]) ma[j][i]=1; } for(int i=0;i<n;i++) if(!d[i]) d[i]=dfs(i); for(int i=0;i<n;i++) cout<<"d["<<i<<"]="<<d[i]<<endl; cout<<endl; int maxv=0; for(int i=1;i<n;i++) if(d[i]>d[maxv]) maxv=i; print(maxv); return 0;}