import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Stack;
import javax.jws.soap.SOAPBinding.Use;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
LinkedList<ok> list=new LinkedList<ok>();
int nb=1;
while (sc.hasNext())
{
String x=sc.nextLine();
if (x.equals("")==true)
{
break;
}
String y[]=x.split(" ");
list.add(new ok(Integer.valueOf(y[0]), Integer.valueOf(y[1]), nb) );nb++;
}
Collections.sort(list);
int dp[]=new int[list.size()];
int pre[]=new int[list.size()];
for (int i = 0; i < pre.length; i++)
{
dp[i]=1; pre[i]=-1;
}
for (int i = 0; i < list.size(); i++)
{
for (int j = 0; j <i; j++)
{
if ( list.get(j).a<list.get(i).a && list.get(j).b>list.get(i).b )
{
if (dp[i]<dp[j]+1)
{
dp[i]=dp[j]+1;pre[i]=j;
}
}
}
}
int ddp =-1;int schu=0;
for (int i = 0; i < pre.length; i++)
{
if (ddp<dp[i])
{
ddp=dp[i];schu=i;
}
}
Stack<Integer> stack=new Stack<Integer>();
while(schu!=-1) {
stack.add(list.get(schu).id);schu=pre[schu];
}
System.out.println(stack.size());
while(!stack.isEmpty()) {
System.out.println(stack.pop());
}
}
}
class ok implements Comparable<ok>{
int a,b,id;public ok(int a,int b,int c){this.a=a;this.b=b;id=c;}
@Override
public int compareTo(ok o)
{
return o.b-b;
}
}
class node{
int node,max;public node(int node,int max){this.node=node;this.max=max;}
}