#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> const int MAX=10010; int DP[MAX]; int rem[MAX]; using namespace std; typedef struct Mouse { int weight; int speed; int num; }mice; mice s[MAX]; bool cmp(mice x,mice y) { if(x.weight==y.weight) return x.speed<y.speed; else return x.weight>y.weight; } int main() { int n,m,maxn,i,j,k,t,mark; for(i=1;i<MAX;i++) rem[i]=i; k=1; while(scanf("%d%d",&s[k].weight,&s[k].speed)!=EOF) { s[k].num=k; k+=1; } sort(s+1,s+k,cmp); memset(DP,0,sizeof(DP)); for(i=1,m=0;i<k;i++) { maxn=0; for(j=1;j<i;j++) { if(s[i].weight<s[j].weight&&s[i].speed>s[j].speed) { if(maxn<DP[j]) { maxn=DP[j]; mark=s[j].num; } } if(maxn) rem[s[i].num]=mark; DP[i]=maxn+1; if(m<DP[i]) { m=DP[i]; t=s[i].num; } } } if(m==1) { cout<<1<<endl<<1<<endl; } else { cout<<m<<endl; while(rem[t]!=t) { cout<<t<<endl; t=rem[t]; } cout<<t<<endl; } return 0; }