public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in))
int[] s = Arrays.stream(bf.readLine().split(" ")).mapToInt(Integer::parseInt).toArray()
bf.close()
// 构造数组
List<int[]> list = new ArrayList<>()
for (int i = 0
int[] ints = Arrays.copyOfRange(s, 1, i + 2)
list.add(ints)
}
// 排序
list.sort((a, b) -> {
if (a[0] == b[0]) {
return a[1] - b[1]
} else {
return a[0] - b[0]
}
})
// 取交集
List<int[]> list1 = new ArrayList<>()
for (int i = 0
for (int j = i + 1
int[] ints = list.get(i)
int[] ints2 = list.get(j)
int left = Math.max(ints[0], ints2[0])
int right = Math.min(ints[1], ints2[1])
if (left <= right) {
list1.add(new int[] {left, right})
}
}
}
// 排序
list1.sort((a, b) -> {
if (a[0] == b[0]) {
return a[1] - b[1]
} else {
return a[0] - b[0]
}
})
List<int[]> list2 = new ArrayList<>()
int[] temp = new int[]{}
for (int i = 1
int[] unit = getUnit(list1.get(i), list1.get(++i))
while (unit.length > 0) {
i++
unit = getUnit(unit, list1.get(i))
}
list2.add(unit)
temp = list1.get(i)
}
}
public static int[] getUnit(int[] a, int[] b) {
int left = Math.max(a[0], b[0])
int right = Math.min(a[0], b[0])
if (left <= right) {
int left1 = Math.min(a[0], b[0])
int right1 = Math.max(a[0], b[0])
return new int[] {left1, right1}
}
return new int[] {}
}
import java.util.*;
import java.util.Scanner;
public class quJianJiaoJi {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] str = in.nextLine().split(" ");
int[] arr = new int[str.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(str[i]);
}
List<int[]> res = new ArrayList<>();
for (int i = 0; i < arr.length; i += 2) {
for (int j = i + 2; j < arr.length; j += 2) {
int left = Math.max(arr[i], arr[j]);
int right = Math.min(arr[i + 1], arr[j + 1]);
if (left <= right) {
res.add(new int[]{left, right});
}
}
}
int[][] ans = res.toArray(new int[res.size()][]);
Arrays.sort(ans, (a, b) -> (a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]));
int[][] result = new int[ans.length][2];
int index = -1;
for (int[] an : ans) {
if (index == -1 || an[0] > result[index][1]) {
result[++index] = an;
} else {
result[index][1] = Math.max(result[index][1], an[1]);
}
}
int[][] last = Arrays.copyOf(result, index + 1);
for (int i = 0; i < last.length; i++) {
System.out.print(last[i][0]);
System.out.print(" ");
System.out.print(last[i][1]);
if (i != last.length - 1) {
System.out.print(" ");
}
}
}
}