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