#arc0323. [arc032_3]仕事計画

[arc032_3]仕事計画

问题

大工Cho先生(Daiku Cho)被委托完成了N个任务。第i个任务从时间aia_i开始,bib_i结束。

由于Cho先生无法同时处理多个任务,他希望尽量选择更多的任务,使得它们的执行时间不重叠。然而,在选择最多任务的方法时,他希望选择的任务编号按照开始时间的顺序排列,以得到字典顺序最小的结果。

Cho先生擅长工作,但不擅长管理日程安排。请找出Cho先生接受的最佳任务组合。

给定长度为L的序列A=a1,a2,,aLA={a_1,a_2,…,a_L}B=b1,b2,,bLB={b_1,b_2,…,b_L},按照字典顺序,如果满足以下条件,则A小于B:

  • 对于存在k(1≦k≦L),满足i<ki<kaia_i=bib_i以及i=ki=kaia_i<bib_i

输入

输入以以下格式从标准输入中给出。

NN a1a_1 b1b_1 a2a_2 b2b_2 : aNa_N bNb_N

  • 第1行包含一个整数N,表示Cho先生委托的任务数量 (1N100,000)(1 ≦ N ≦ 100,000)
  • 第2行到第N行,给出Cho先生被委托的任务信息。其中第i行给出第i个任务的开始时间和结束时间,用两个整数ai,bi(0ai<bi1,000,000)a_i, b_i (0 ≦ a_i < b_i ≦ 1,000,000)表示,两个整数之间用空格分隔。

输出

  • 第1行输出Cho先生接受的任务数量。
  • 第2行按开始时间的顺序输出Cho先生接受的任务,任务之间用一个空格分隔。

请注意不要忘记最后的换行符。同时,不要在末尾添加额外的空格。


输入示例1


4
0 5
0 3
3 7
5 10

输出示例1


2
1 4

Cho先生最多可以选择两个任务。有三种选择方式:Cho先生可以选择任务1和任务4,也可以选择任务2和任务3,或者选择任务2和任务4。其中,在按照开始时间的顺序排列这些任务编号时,选择任务1和任务4会得到1,4\\{1,4\\}这个结果,这是字典顺序最小的情况。(已修正)


输入示例2


5
0 5
0 3
3 7
5 10
7 12

输出示例2


3
2 3 5

输入示例3


8
1 5
3 9
2 5
1 2
8 10
9 11
7 15
10 14

输出示例3


4
4 3 5 8