import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		//接收用户输入的“边长”
		n = sc.nextInt();
		//如果边长为1,直接输出得了
		if(n == 1){
			System.out.println("A");
			return;
		}
		int b = n*2-1;
		char arr[][] = new char[b][b];
		for(int i = 0; i < b; i++){
			for(int j = 0; j < b; j++){
				arr[i][j] = '.';
			}
		}
		
		f(arr, b);
		
		//打印结果图像
		for(int i = 0; i < b; i++){
			for(int j = 0; j < b; j++){
				System.out.print(arr[i][j]);
			}
			System.out.println();
		}
	}
	
	static int n;
	static void f(char ch[][], int b){
		int start = 0;
		int end = b-1;
		char w= 'A';
		int add = b/3+n/3;
		
		int cnt = 0;
		while(true){
			//由外向内
			for(int i = start; i <= end; i+=add){
				ch[i][start] = w;//左
				ch[start][i] = w;//上
				ch[i][end] = w;//右
				ch[end][i] = w;//下
			}
			start++;
			end--;
			w++;
			add = add - 1;
			if(add <= 0)add =1;
			
			cnt++;
			if(cnt == n)break;
		}
	}
}
/**************************************************************
	Problem: 1856
	User: admin
	Language: Java
	Result: Accepted
	Time:2624 ms
	Memory:40504 kb
****************************************************************/