화가 빈센트는 고층 건물이 늘어선 도시를 여행하면서 건물의 실루엣만 그린 그림을 완성했다. 그림은 완성한 지 일주일 뒤에 불에 타 없어졌다. 건축가들이 건물의 정확한 크기를 다시 알려 주었으니 이제 그림을 복원하면 된다.
건물이 N개 있다. i번 건물은 변이 좌표축과 평행하고 왼쪽 아래 꼭짓점이 (Li,0), 오른쪽 위 꼭짓점이 (Ri,Hi)인 직사각형이다. 실루엣은 이 직사각형 N개의 합집합이다.
L=minLi, R=maxRi, H=maxHi라고 하자. 그림의 너비는 R−L칸이라서 왼쪽 끝이 가장 왼쪽 건물의 왼쪽 변에, 오른쪽 끝이 가장 오른쪽 건물의 오른쪽 변에 맞는다. 그림은 건물을 그리는 H줄 아래에 x축 한 줄을 붙인 H+1줄이다. 왼쪽에서 j번째 칸은 x축의 구간 [L+j−1,L+j]에, 위에서 k번째 줄은 y축의 구간 [H−k,H−k+1]에 대응한다. 마지막 줄은 x축이고 너비만큼 전부 *로 채운다.
좌표가 모두 정수이므로 x축 위의 칸은 실루엣에 완전히 들어가거나 실루엣과 내부를 공유하지 않는다. 실루엣에 완전히 들어가는 칸을 건물 칸이라고 부르자. 어떤 건물 칸에 변이나 꼭짓점을 맞대는 여덟 칸 중에 건물 칸이 아닌 칸이 하나라도 있으면 그 칸에 #을 쓰고, 나머지 칸에는 .을 쓴다. 그림의 가로 범위를 벗어난 칸은 건물 칸이 아니다. 가로 범위 안에서 x축 줄과 그 아래에 있는 칸은 건물 칸으로 본다. 이렇게 하면 실루엣의 윤곽선만 남는다.
수학자들이 구한 값을 확인해야 하니 실루엣의 둘레도 함께 구한다. x축 위에 놓인 변은 둘레에 넣지 않는다.
첫 줄에 건물의 수 N이 주어진다. (1≤N≤10000)
다음 N개 줄에 i번 건물을 나타내는 정수 Li, Ri, Hi가 주어진다. (1≤Li,Ri,Hi≤1000, 3≤Ri−Li≤1000)
첫 줄에 실루엣의 둘레를 출력한다. x축 위에 놓인 변은 세지 않는다.
다음 H+1줄에 그림을 출력한다. H는 가장 높은 건물의 높이다.