//求最长上升子序列长度
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
if(a[j]>a[i])
f[j]=max(f[j],f[i]+1);
}
//求最长上升子序列长度和方案
//f[i]表示以i个位置结尾的最长长度
//g[i]代表f[i]这个状态是由哪个状态转移过来的
void dfs(int p)
{
if(p==0)return ;
dfs(g[p];)
cout<<p<<endl;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
if(a[j]>a[i])
if(f[i]+1>f[j])
{
f[j]=f[i]+1;
g[j]=i;
}
}
int p=1;
for(int i=2;i<=n;i++)
if(f[i]>f[p]) p=i;
dfs(p);
return 0;
}
//求最长上升子序列的数量
void dfs(int p)
{
if(p==0)return ;
dfs(g[p];)
cout<<p<<endl;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
memset(f,0,sizeof(f));
memset(h,0,sizeof(h));
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
if(a[j]>a[i])
if(f[i]+1>f[j])
{
f[j]=f[i]+1;
g[j]=i;
h[j]=h[i];
}
else if(f[i]+1==f[j])h[j]+=h[i];
}
int p=1;
for(int i=2;i<=n;i++)
if(f[i]>f[p]) p=i;
dfs(p);
return 0;
}