#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <math.h>
#include <vector>
using namespace std;
#define N 4000
#define ll long long
#define INF 0x3f3f3f3f
#define met(a,b) memset(a,b,sizeof(a));
vector<vector<int> >Q;
struct node
{
int p,w,i,l;
} s[N];
int dp[N];
int cmp(node a,node b)
{
if(a.w!=b.w)
return a.w>b.w;
return a.p<b.p;
}
int main()
{
int k=0;
while(scanf("%d%d",&s[k].w, &s[k].p)!=EOF)
{
s[k].i=k+1;
s[k].l=-1;
k++;
}
sort(s,s+k,cmp);
for(int i=1; i<=k; i++)
dp[i]=1;
dp[0]=0;
int ans=0;
for(int i=0; i<k; i++)
{
for(int j=0; j<i; j++)
{
if(s[i].p>s[j].p && s[i].w<s[j].w)
{
if(dp[j]+1>=dp[i])
{
dp[i]=dp[j]+1;
s[i].l=j;
}
}
if(dp[i]>dp[ans])
ans=i;
}
}
printf("%d\n",dp[ans]);
while(s[ans].l!=-1)
{
printf("%d\n",s[ans].i);
ans=s[ans].l;
}
printf("%d\n",s[ans].i);
return 0;
}