룩 배치

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

n×nn \times n 크기의 체스판(1n30001 \le n \le 3000)에 룩 nn개를 놓으려고 합니다. 배치는 다음 규칙을 만족해야 합니다.

  • i=1,,ni = 1, \dots, n에 대해 ii번 룩은 두 꼭짓점 (ai,bi)(a_i, b_i)(ci,di)(c_i, d_i)로 주어지는 직사각형 안에 놓여야 합니다. 여기서 (ai,bi)(a_i, b_i)는 직사각형의 왼쪽 위 칸(행, 열)이고 (ci,di)(c_i, d_i)는 오른쪽 아래 칸이며, 1aicin1 \le a_i \le c_i \le n, 1bidin1 \le b_i \le d_i \le n입니다. 체스판의 왼쪽 위 칸은 (1,1)(1, 1), 오른쪽 아래 칸은 (n,n)(n, n)입니다. 즉 ii번 룩이 놓이는 칸의 행은 [ai,ci][a_i, c_i], 열은 [bi,di][b_i, d_i] 범위 안에 있어야 합니다.
  • 어떤 두 룩도 서로 공격할 수 없습니다. 즉 두 룩이 같은 행이나 같은 열에 놓일 수 없습니다.

모든 룩을 각자의 직사각형 안에, 서로 공격하지 않도록 놓을 수 있는지 판단하고, 가능하다면 그러한 배치 하나를 출력하세요.

입력

첫 번째 줄에 정수 nn(1n30001 \le n \le 3000)이 주어집니다. 이어지는 nn개의 줄에는 각각 네 정수 aia_i, bib_i, cic_i, did_i가 공백 하나로 구분되어 주어지며, ii번 룩의 직사각형을 나타냅니다(1aicin1 \le a_i \le c_i \le n, 1bidin1 \le b_i \le d_i \le n, 모든 값은 11 이상 nn 이하).

출력

유효한 배치가 존재하지 않으면 NIE(폴란드어로 "아니오") 한 단어만 출력합니다.

그렇지 않으면 nn개의 줄을 출력합니다. ii번째 줄에는 ii번 룩의 행과 열을 공백 하나로 구분해 출력하며, 행은 [ai,ci][a_i, c_i], 열은 [bi,di][b_i, d_i] 범위 안에 있어야 합니다. 룩은 입력에서 직사각형이 주어진 순서와 같은 순서로 출력합니다.

유효한 배치가 여러 개일 수 있으므로 사전순으로 가장 작은 배치를 출력합니다. 두 배치는 값을 순서대로 나열한 수열, 즉 1번 룩의 행, 1번 룩의 열, 2번 룩의 행, 2번 룩의 열, 이런 순서로 비교합니다. 다시 말해 1번 룩의 행을 가능한 한 작게, 그다음 그 열을 가능한 한 작게, 그다음 2번 룩의 행, 그다음 그 열을 작게 하는 식으로 최소화합니다.