[Cerc2013] History course

时间限制:10s      空间限制:128MB

题目描述

你被给定一系列关于重要的历史事件的演讲,每件事一场演讲,它们不按顺序排列。每件历史事件持续一个时间段[ai,bi]。如果两件事的时间有共同区间,我们说它们是有关联的。把关于有关联的历史事件的演讲排的彼此靠近能使课程更便于理解。此外,不相关的演讲必须按历史事件的发生时间排序(如果A在B之前发生,且AB不相关,那么关于A的演讲必须在B之前进行) 
找出最小的整数k>=0和一个演讲的顺序,使得排序后任意两场相关的演讲之间的间隔不超过k(第i场演讲和第j场演讲之间的间隔是|i-j|)。 


输入格式

第一行包括数据组数T。每组数据包含以下内容: 
每组数据的第一行是一个数n,1<=n<=50000。接下来n行包括两个整数ai和bi,-10^9<=ai<=bi<=10^9。区间两两不相同。 


输出格式

每组数据答案的第一行是一个最小值k,接下来n行按顺序列举排列后的演讲的历史事件的区间(与输入中的格式一样),使得任意两个相关的演讲相隔不超过k。切记将不相关的演讲按时间顺序排列! 


样例输入

1 
3 
1 6 
2 3 
4 5 

样例输出

1 
2 3 
1 6 
4 5 

提示

共有三个历史事件,其中1,2;1,3是相关的,2,3不相关,且2在3之前发生,所以2应该排在3的前面。对于相关的历史事件,1与2在排列后的位置是2和1,间隔为1,1与3在排列后的位置为2与3,间隔为1,所以此时k最小为1,该排法最优。 


题目来源

没有写明来源