import java.util.Scanner;
public class N_queen {
static int N;
static int[][] map;
static int answer = 0;
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
N = sc.nextInt();
answer = 0;
map = new int[N][N];
dfs(0,0);
System.out.println(answer);
}
}
public static void dfs(int row,int count){
if(count==N){
answer++;
return;
}
for (int i = row; i < N; i++) {
for (int j = 0; j < N; j++) {
if(check(i,j)){
map[i][j] = 1;
dfs(i+1,count+1);
map[i][j] = 0;
}
}
}
}
public static boolean check(int row, int col){
boolean flag = false;
for (int i = 0; i < N; i++) {//가로
if(map[row][i]!=0)flag = true;
}
for (int i = 0; i < N; i++) {//세로
if(map[i][col]!=0) flag = true;
}
for (int i = 0; i < N; i++) {//대각선 4방향
if(row+i<N&&col+i<N){
if(map[row+i][col+i]!=0) flag = true;
}
if(row-i>=0&&col+i<N){
if(map[row-i][col+i]!=0) flag = true;
}
if(row+i<N&&col-i>=0){
if(map[row+i][col-i]!=0) flag = true;
}
if(row-i>=0&&col-i>=0){
if(map[row-i][col-i]!=0) flag = true;
}
}
if(!flag){
return true;
}
return false;
}
}
백트래킹의 기본 구조인데, 빡빡한 시간제한과, 체크로직, 배려없는 테케(0,1 줄꺼면 걍 주지말던가 뭐하는거)때매 헷갈릴만한 문제이다.