고층 건물 실루엣

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

문제

화가 빈센트는 고층 건물이 늘어선 도시를 여행하면서 건물의 실루엣만 그린 그림을 완성했다. 그림은 완성한 지 일주일 뒤에 불에 타 없어졌다. 건축가들이 건물의 정확한 크기를 다시 알려 주었으니 이제 그림을 복원하면 된다.

건물이 NN개 있다. ii번 건물은 변이 좌표축과 평행하고 왼쪽 아래 꼭짓점이 (Li,0)(L_i, 0), 오른쪽 위 꼭짓점이 (Ri,Hi)(R_i, H_i)인 직사각형이다. 실루엣은 이 직사각형 NN개의 합집합이다.

L=minLiL = \min L_i, R=maxRiR = \max R_i, H=maxHiH = \max H_i라고 하자. 그림의 너비는 RLR - L칸이라서 왼쪽 끝이 가장 왼쪽 건물의 왼쪽 변에, 오른쪽 끝이 가장 오른쪽 건물의 오른쪽 변에 맞는다. 그림은 건물을 그리는 HH줄 아래에 xx축 한 줄을 붙인 H+1H + 1줄이다. 왼쪽에서 jj번째 칸은 xx축의 구간 [L+j1,L+j][L + j - 1, L + j]에, 위에서 kk번째 줄은 yy축의 구간 [Hk,Hk+1][H - k, H - k + 1]에 대응한다. 마지막 줄은 xx축이고 너비만큼 전부 *로 채운다.

좌표가 모두 정수이므로 xx축 위의 칸은 실루엣에 완전히 들어가거나 실루엣과 내부를 공유하지 않는다. 실루엣에 완전히 들어가는 칸을 건물 칸이라고 부르자. 어떤 건물 칸에 변이나 꼭짓점을 맞대는 여덟 칸 중에 건물 칸이 아닌 칸이 하나라도 있으면 그 칸에 #을 쓰고, 나머지 칸에는 .을 쓴다. 그림의 가로 범위를 벗어난 칸은 건물 칸이 아니다. 가로 범위 안에서 xx축 줄과 그 아래에 있는 칸은 건물 칸으로 본다. 이렇게 하면 실루엣의 윤곽선만 남는다.

수학자들이 구한 값을 확인해야 하니 실루엣의 둘레도 함께 구한다. xx축 위에 놓인 변은 둘레에 넣지 않는다.

입력

첫 줄에 건물의 수 NN이 주어진다. (1N100001 \le N \le 10\,000)

다음 NN개 줄에 ii번 건물을 나타내는 정수 LiL_i, RiR_i, HiH_i가 주어진다. (1Li,Ri,Hi10001 \le L_i, R_i, H_i \le 1\,000, 3RiLi10003 \le R_i - L_i \le 1\,000)

출력

첫 줄에 실루엣의 둘레를 출력한다. xx축 위에 놓인 변은 세지 않는다.

다음 H+1H + 1줄에 그림을 출력한다. HH는 가장 높은 건물의 높이다.