펀치 카드
시간 제한5초메모리 제한1024 MB
R과 C가 주어질 때, R행 C열의 펀치 카드를 ASCII 아트로 출력합니다. 각 칸은 마침표를 대시, 파이프, 플러스 기호로 된 테두리가 감쌉니다.
문제
비밀 프로그래머 팀이 프로그래밍 언어의 판도를 흔들고 펀치 카드를 다시 쓰이게 하려고 한다. 이들은 펀치 카드로 Python 코드를 작성할 수 있는 새 언어 Punched Card Python을 내놓을 계획이다. 언어의 프로토타입 설계가 나오기 전에 바이럴 캠페인부터 시작할 생각이다. 캠페인에서는 여러 크기의 펀치 카드를 ASCII 아트로 그리려 한다.

펀치 카드의 ASCII 아트는 왼쪽 위 칸을 뺀 행렬과 비슷하다. 따라서 칸은 모두 개다. 각 칸은 마침표(.)를 가운데 두고, 위아래에 대시(-), 좌우에 파이프(|), 모서리에 플러스(+)를 그려 만든다. 인접한 칸은 테두리 문자를 공유한다. 마침표는 맨 윗줄의 칸을 맞추는 데 쓴다.
예를 들어 , 인 펀치 카드는 다음과 같다.
..+-+-+-+
..|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+
|.|.|.|.|
+-+-+-+-+
정수 과 가 주어지면, 위에서 설명한 펀치 카드의 ASCII 아트를 출력하시오.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 이후 개의 줄에 각각 펀치 카드의 행 수 과 열 수 가 정수로 주어진다.
출력
각 테스트 케이스마다 Case #x:를 한 줄에 출력한다. 여기서 는 1부터 시작하는 테스트 케이스 번호다. 이어서 행 열 펀치 카드의 ASCII 아트를 줄에 걸쳐 출력한다.
힌트
예제 1은 문제 설명에 나온 카드다. 예제 2와 3은 추가 예시다. 각 케이스의 출력에는 정확히 개의 마침표가 들어 있다.