구간 색칠하기

끝점이 모두 다른 n개의 닫힌 구간이 주어질 때, 겹치는 구간이 서로 다른 색을 받도록 하는 최소 색의 수를 구한다.

보통4정렬구간그리디배열면접 대비아직 제출이 없습니다시간 제한3초메모리 제한512 MB

문제

실수 aba \le b에 대해 닫힌구간 [a,b][a, b]aa 이상 bb 이하인 모든 실수의 집합이다. 예를 들어 [3,5]={xR3x5}[3, 5] = \{x \in \mathbb{R} \mid 3 \le x \le 5\}이다.

밥에게는 닫힌구간 nn[a1,b1],[a2,b2],,[an,bn][a_1, b_1], [a_2, b_2], \dots, [a_n, b_n]이 있다. 서로 다른 두 첨자 i,j{1,2,,n}i, j \in \{1, 2, \dots, n\}에 대해 다음이 항상 성립한다.

  • aia_ibib_i는 양의 정수이다.
  • aibia_i \le b_i이다. 즉 [ai,bi][a_i, b_i]는 공집합이 아니다.
  • aibja_i \ne b_j이고 aiaja_i \ne a_j이며 bibjb_i \ne b_j이다. 즉 서로 다른 두 닫힌구간은 끝점을 공유하지 않는다.

밥은 각 구간을 한 가지 색으로 칠하되, 서로 겹치는 두 구간은 반드시 다른 색으로 칠하려 한다. 이때 필요한 색의 최소 개수가 궁금하다. 다시 말해 각 구간에 1,2,,k1, 2, \dots, k 중 하나를 붙여서 겹치는 두 구간이 언제나 서로 다른 번호를 받도록 만들 수 있는 가장 작은 양의 정수 kk를 구하면 된다. 두 구간이 겹친다는 것은 두 집합의 교집합이 공집합이 아니라는 뜻이다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어지는 TT개의 줄에 각 테스트 케이스가 nn, a1a_1, b1b_1, a2a_2, b2b_2, \dots, ana_n, bnb_n 순서로 주어진다. 한 줄 안에서 이웃한 두 수는 하나 이상의 공백으로 구분된다.

다음을 가정해도 된다.

  • 1T101 \le T \le 10
  • n{2,3,,100000}n \in \{2, 3, \dots, 100\,000\}
  • 모든 i{1,2,,n}i \in \{1, 2, \dots, n\}에 대해 aia_ibib_i23212^{32} - 1 이하의 양의 정수이다.

출력

각 테스트 케이스마다 최소 색 개수 kk를 한 줄에 하나씩 출력한다. 즉 [a1,b1],[a2,b2],,[an,bn][a_1, b_1], [a_2, b_2], \dots, [a_n, b_n]의 각 구간에 11부터 kk까지의 번호 중 하나를 붙여서 겹치는 두 구간이 언제나 서로 다른 번호를 받도록 만들 수 있는 가장 작은 양의 정수를 출력한다.