#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

int N, n;

char str[200][200];

void set_(int x, int y){
	if(x < 0 || y < 0 || x >= n || y >= n){
		return;
	}
	str[y][x] = ' ';
}

bool checker(int x, int y){
	if(x < 0 || y < 0 || x >= n || y >= n){
		return false;
	}
	if(str[y][x] == 'p'){
		return true;
	}
	return false;
}

bool set(int x, int y, int dx, int dy){
	if(x < 0 || y < 0 || x >= n || y >= n){
		return false;
	}
	if(str[y][x] != 'p'){
		return false;
	}
	str[y][x] = '#';
	if(dx != 0){
		if(checker(x - dx, y - 1)){
			set_(x - dx, y - 1);
		}
		if(checker(x - dx, y + 1)){
			set_(x - dx, y + 1);
		}
	}else{
		if(checker(x - 1, y - dy)){
			set_(x - 1, y - dy);
		}
		if(checker(x + 1, y - dy)){
			set_(x + 1, y - dy);
		}
	}
	if(!set(x + dx, y + dy, dx, dy)){
		if(dx > 0){
			dx = 0;
			dy = 1;
		}else if(dx < 0){
			dx = 0;
			dy = -1;
		}else if(dy > 0){
			dx = -1;
			dy = 0;
		}else{
			dx = 1;
			dy = 0;
		}
		set(x + dx, y + dy, dx, dy);
	}
	return true;
}

int main(){
	
	cin >> N;
	
	for(int loop = 0; loop < N; loop++){
		cin >> n;
		for(int i = 0; i < n; i++){
			for(int j = 0; j < n; j++){
				str[i][j] = 'p';
			}
		}
		
		set(0, n - 1, 0, -1);
		
		for(int i = 0; i < n; i++){
			for(int j = 0; j < n; j++){
				if(str[i][j] == 'p'){
					str[i][j] = ' ';
				}
			}
		}
		
		for(int i = 0; i < n; i++){
			for(int j = 0; j < n; j++){
				printf("%c", str[i][j]);
			}
			printf("\n");
		}
		printf("\n");
		cout << endl;
	}
	
	return 0;
}