Problem:
ぐるぐる模様

「ぐるぐる模様」を表示するプログラムを作成することにしました。「ぐるぐる模様」は以下のようなものとします。

1 辺の長さが n の場合、n 行 n 列の文字列として表示する。

左下隅を基点とし，時計回りに回転する渦状の模様とする。

線のある部分は #（半角シャープ）、空白部分は " "（半角空白）で表現する。

線と線の間は空白を置く。

整数 n を入力とし，1 辺の長さが n の「ぐるぐる模様」を出力するプログラムを作成してください。

Input

入力は以下の形式で与えられます。

d
n1
n2
:
nd

１行目にデータセットの数 d (d ≤ 20)、続く d 行に i 個目のぐるぐる模様の辺の長さ ni (1 ≤ ni ≤ 100) がそれぞれ１行に与えられます。

Output

データセットごとに、ぐるぐる模様を出力してください。データセットの間に１行の空行を入れてください。

Sample Input

2
5
6

Output for the Sample Input

#####
# #
# # #
# # #
# ###

######
# #
# ## #
# # #
# # #
# ####

Solution in JAVA (judge verdict: WA: Presentation Error)

import java.util.Scanner;

public class Main{
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n;
		int a[][];

		n = sc.nextInt();
		for (int i = 0; i < n ;i++) {
			int k = sc.nextInt();
			a = new int[k][k];
			int x = 0;
			int y = k - 1;
			int dir = 1;
			if (k == 1) {
				a[0][0] = 1;
			} else if (k == 2) {
				a[0][0] = 1;
				a[0][1] = 1;
				a[1][0] = 1;
				a[1][1] = 0;
			} else {
				while (true) {
					a[y][x] = 1;
					if (dir == 1) {
						if (y == 0 || (0 <= y - 2 && a[y - 2][x] == 1)) {
							if (a[y][x + 2] == 1 || a[y + 1][x + 1] == 1) {
								break;
							} else {
								dir = 2;
								x++;
							}
						} else {
							y--;
						}
					} else if (dir == 2) {
						if (x == k - 1 || (x + 2 < k && a[y][x + 2] == 1)) {
							if (a[y + 2][x] == 1 || a[y + 1][x - 1] == 1) {
								break;
							} else {
								dir = 3;
								y++;
							}
						} else {
							x++;
						}
					} else if (dir == 3) {
						if (y == k - 1 || (y + 2 < k && a[y + 2][x] == 1)) {
							if (a[y][x - 2] == 1 || a[y - 1][x - 1] == 1) {
								break;
							} else {
								dir = 4;
								x--;
							}
						} else {
							y++;
						}
					} else {
						if (x == 0 || (0 <= x - 2 && a[y][x - 2] == 1)) {
							if (a[y - 2][x] == 1 || a[y - 1][x + 1] == 1) {
								break;
							} else {
								dir = 1;
								y--;
							}
						} else {
							x--;
						}
					}
				}
			}
			for (int j = 0; j < k; j++) {
				for (int l = 0; l < k; l++) {
					System.out.print((a[j][l] == 1) ? "#" : " ");
				}
				System.out.println();
			}
		}
	}
}