#include <cstdio>

#define MAXN 100000
#define MAXLEN 100000

int N;

void init()
{
	scanf("%d", &N);
}

int L;
char str[MAXLEN+5];
char tempStr[MAXLEN+5];

void doOp1() { return; str[L-1] = (str[L-1] == 'A') ? 'B' : 'A'; }
void doOp2() { return; for(int i=1; i<L; i++) tempStr[i] = (str[i]==str[i-1]) ? 'B' : 'A'; for(int i=1; i<L; i++) str[i]=tempStr[i]; }

void solve()
{
	if(N==2)
	{
		printf("AA\n11\n");
		return;
	}
	if(N>3 and (N&1)!=0)
	{
		printf("NO\n");
		return;
	}
	//int logN = 32 - __builtin_clz(N-1);
	int logN = 31 - __builtin_clz(N);
	//printf("%d\n", logN);
	
	int len = (1<<(logN-1)) + 2;
	L=len;
	
	char lastChar = ((N&1) == 0) ? 'A' : 'B';
	for(int i=0; i<L; i++) str[i]='A'; str[L-1]=lastChar; str[L]='\0';
	
	for(int i=0; i<len-1; i++) printf("A"); printf("%c\n", lastChar);
	
	int onesNeeded = N - (1<<logN);
	for(int i=0; i<(1<<logN); i++)
	{
		printf("2"); doOp2();
		if(onesNeeded) { printf("1"); doOp1(); onesNeeded--; }
	}
	printf("\n");
	//printf("%s\n", str);
}

//lld
int main()
{
	//printf("%d\n", 1<<(32 - __builtin_clz(2-1)));
	//N=1581;
	//freopen("abwords.out", "w", stdout);
	init();
	
	solve();
	
	return 0;
}
