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: Wrong Answer)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
 
 
public class Main {
	private static  BufferedReader  br = null;

	static {
		br = new BufferedReader(new InputStreamReader(System.in));
	}

	/**
	* @param args
	*/
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int cnt = 0;
		while ((cnt = parseCnt()) != 0) {
			for (int i = 0; i < cnt; i++) {
				if (i != 0) {
					System.out.println();
				}
				parseSpiral();
			}
		}
	}

	private static void parseSpiral() {
		int	len = parseCnt();
		if (len > 0) {
			char[][]	map = new char[len][len];

			if (len == 1) {
				map[0][0] = '#';
			} else {
				for (int i = 0, j = len-1; i <= j; i++,j--) {
					if (i%2 == 0) {
						if (i==0) {
							Arrays.fill(map[i], '#');
						} else {
							map[i] = map[j+2].clone();
							map[i][j+1] = ' ';
						}

						if (i != j) {
							map[j] = map[i].clone();
							map[j][i+1] = ' ';
						}
					} else {
						if (i==1) {
							map[i][0] ='#';
							map[i][j+1] ='#';
						} else {
							map[i] = map[j+2].clone();
							map[i][j+1] = '#';
						}

						if (i != j) {
							map[j] = map[i].clone();
							if (i+1 != j) {
								map[j][i+1] = '#';
							}
						}
					}
				}
			}

			for (int i = 0; i < map.length; i++) {
				System.out.println(map[i]);
			}
		}
	}

	private static int parseCnt() {
		int     cnt = 0;
		String  str = null;

		if ((str = parseStdin()) != null) {
			cnt = Integer.parseInt(str);
		}

		return cnt;
	}

	private static String parseStdin() {
		String	stdin = null;

		try {
			String	tmp = br.readLine();
			if (tmp != null) {
				if (!tmp.isEmpty()) stdin = tmp;
				}
			}
		catch (IOException e) {}

		return stdin;
	}
}