#include <stdio.h>
#include <math.h>
#include<string.h>
#include<iostream>
#include <algorithm>
using namespace std;
int dp[1111];
int m[1111];
int v[1111];
int xuhao[1111];
int done[1111];
int a,n;
int search(int x);
int maxx[1111];
int main()
{
//freopen("D:\\in.txt","r",stdin);
//freopen("D:\\out.txt","w",stdout);
int i=0;
while (scanf("%d %d ",&m[i],&v[i])!=EOF)
{
//if (m[i]==0){break;}
i++;
}
n=i-1;
for (i=0;i<=n;i++)
{
xuhao[i]=i+1;
}
/*sort(m,m+n);
for (i=0;i<=n;i++)
{
printf("%d %d",m[i],v[i]);
}*/
int temp,temp1;
for(int i = 0;i <=n;i++)
{
for(int j = 0;j <n;j++)
{
if(m[j] > m[j + 1])
{
temp=m[j];
m[j]=m[j+1];
m[j+1]=temp;
temp=v[j];
v[j]=v[j+1];
v[j+1]=temp;
temp=xuhao[j];
xuhao[j]=xuhao[j+1];
xuhao[j+1]=temp;
}
if(m[j]==m[j+1] && v[j]<v[j+1])
{
temp1=m[j];
m[j]=m[j+1];
m[j+1]=temp1;
temp1=v[j];
v[j]=v[j+1];
v[j+1]=temp1;
temp1=xuhao[j];
xuhao[j]=xuhao[j+1];
xuhao[j+1]=temp1;
}
}
}
/* for (i=0;i<=n;i++)
{
printf("%d %d %d\n",m[i],v[i],xuhao[i]);
}*/
int score=0;
memset(dp, 0, sizeof(dp));
memset(maxx, 0, sizeof(dp));
memset(done, 0, sizeof(done));
for (int j = 0; j<=n; j++)
{
a=search(j);
if (a>score)
score=a;
}
printf("%d\n",score+1);
int t=1100;
v[t]=99999;
m[t]=0;
while(score>=0)
{
for (int i=0;i<=n;i++)
{
if(score==search(i) && v[t]>v[i] && m[t]<m[i])
{
printf("%d\n",xuhao[i]);
t=i;
}
}
score=score-1;
}
return 0;
}
int search(int x)
{
if (done[x]) return dp[x];
else
{
for (int i=0;i<=n;i++)
{
if (v[x]>v[i] && m[x]<m[i] )
{
int ans=search(i)+1;
if (ans>maxx[x])
{
maxx[x]=ans;
}
}
}
dp[x]=maxx[x];
done[x]=1;
return maxx[x];
}
}