#include<iostream>
#include<stdio.h>
#include<string>
#include<cstdlib>
#include<map>
using namespace std ;

int n ;
int sz ;
string a ;
int b[ 1000007 ] ;

map < string , int > ZX ;

void check ( ) {
	ZX.clear ( ) ;
	string t ;
	int i ;
	string st = a ;
	//cout << a  << "\n" ;
	/**
	if ( st == "AABB" ) {
		for ( i = 0 ; i < n ; i ++ ) cout << b[ i ] ;
		cout << "\n" ;
	}**/
	for ( i = 0 ; i < n ; i ++ ) {
		//if ( st == "AABB" ) { cout << a << " " << b[ i ] << "\n" ; }
		if ( b[ i ] == 1 ) {
			if ( a[ sz - 1 ] == 'A' ) a[ sz - 1 ] = 'B' ;
			else a[ sz - 1 ] = 'A' ;
		}
		else {
			t.clear ( ) ;
			t += 'A' ;
			for ( i = 1 ; i < sz ; i ++ ) {
				if ( a[ i ] == a[ i - 1 ] ) t += 'B' ;
				else t += 'A' ;
			}
			a = t ;
		}
		if ( ZX[ a ] != 0 ) return ;
		ZX[ a ] = 1 ;
	}
	if ( a != st ) return ;
	cout << a << "\n" ;
	for ( i = 0 ; i < n ; i ++ ) cout << b[ i ] ;
	cout << "\n" ;
	exit ( 0 ) ;
}

void rec ( int u ) {
	//cout << "--" << u << "\n" ;
	if ( u == n ) { check ( ) ; return ; }
	b[ u ] = 1 ;
	rec ( u + 1 ) ;
	b[ u ] = 2 ;
	rec ( u + 1 ) ;
}

void spam ( ) {
	rec ( 0 ) ;
}

void dfs ( int pos ) {
	//cout << pos << "\n" ;
	if ( pos == sz ) { spam ( ) ; return ; }
	a[ pos ] = 'A' ;
	dfs ( pos + 1 ) ;
	a[ pos ] = 'B' ;
	dfs ( pos + 1 ) ;
}

void input ( ) {
	cin >> n ;
}

void solve ( ) {
	int i , j ;
	//b.resize ( n ) ;
	for ( i = 1 ; i <= n ; i ++ ) {
		a.clear ( ) ;
		//a.resize ( i ) ;
		for ( j = 0 ; j < i ; j ++ ) a += 'A' ;
		sz = i ;
		dfs ( 0 ) ;
	}
}

int main ( ) {
	input ( ) ;
	solve ( ) ;
	return 0 ;
}
