#include<bits/stdc++.h>
using namespace std;
const int maxn=6010;
int n,ans1[maxn],ans2[maxn],k1,k2,cnt,pre[maxn],knum[maxn];
struct node{
int v,w,num;
}a[maxn];
bool cmp(node x,node y){
return x.v<y.v;
}
int main(){
cin>>n>>k1>>k2;
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i].v,&a[i].w);
a[i].num=i;
pre[i]=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(a[i].v<=k1||a[i].w<=k2) continue;
int x=lower_bound(ans1+1,ans1+cnt+1,a[i].v)-ans1;
int y=lower_bound(ans2+1,ans2+cnt+1,a[i].w)-ans2;
if(x!=y) continue;
if(x>cnt){
cnt++;
ans1[cnt]=a[i].v;
ans2[cnt]=a[i].w;
knum[cnt]=a[i].num;
}
else {
ans1[x]=a[i].v;
ans2[x]=a[i].w;
}
}
cout<<cnt<<endl;
for(int i=1;i<=cnt;i++) cout<<knum[i]<<" ";
cout<<endl;
return 0;
}