#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
struct point{
int speed,weight,index;
}num[1002];
bool cmp(point a,point b)
{
return (a.weight<b.weight || (a.weight==b.weight && a.speed>b.speed));
}
int main()
{
int n,i=0,j,sum[1002]={0},max,t;
int flag[1002],dir[1002];
while(scanf("%d%d",&num[i].weight,&num[i].speed)!=EOF)
{
num[i].index=i;
flag[i]=i;
i++;
}
n=i;
sort(num,num+n,cmp);
sum[0]=1;
for(i=1;i<n;i++)
{
max=0;
t=-1;
for(j=0;j<i;j++)
if(num[j].weight<num[i].weight && num[j].speed>num[i].speed&&max<sum[j])
{
max=sum[j];
t=j;
}
sum[i]=max+1;
if(t!=-1)
flag[i]=t;
}
max=0;t=0;
for(i=0;i<n;i++)
if(max<sum[i])
{
max=sum[i];
t=i;
}
printf("%d\n",max);
i=t;j=0;
while(flag[i]!=i){
dir[j++]=i;
i=flag[i];
}
dir[j++]=i;
for(i=j-1;i>=0;i--)
printf("%d\n",num[dir[i]].index+1);
return 0;
}