#include <iostream>
#include <vector>
#include <string>
using namespace std;
int arr[ 20 ] , nofs = 0 ;
void gen( const vector< int > & mvc, vector< string> & res, int n, int i = 0 )
{
if ( i == n) {
int a, b;
string s;
int sumofa = 0 , sumofb = 0 ;
for ( int j = 0 ; j < n; ++ j) {
if ( arr[ j] == 0 ) {
s.push_back ( 'A' ) ;
sumofa + = mvc[ i] ;
}
else {
s.push_back ( 'B' ) ;
sumofb + = mvc[ i] ;
}
}
if ( sumofa == sumofb) {
res.push_back ( s) ;
++ nofs;
}
}
else {
arr[ i] = 0 ;
gen( mvc, res, n, i + 1 ) ;
arr[ i] = 1 ;
gen( mvc, res, n, i + 1 ) ;
}
}
int main( )
{
int n;
vector< int > mvc; // store input sequence
vector< string> res; // store result
cin >> n;
mvc.resize ( n) ;
res.resize ( n) ;
for ( int i = 0 ; i < n; ++ i) {
res[ i] .resize ( n) ;
cin >> mvc[ i] ;
}
gen( mvc, res, n) ;
if ( nofs > 0 ) {
cout << nofs << endl;
for ( int i = 0 ; i < nofs; ++ i) {
for ( int j = 0 ; j < n; ++ j) {
cout << res[ i] [ j] << " " ;
}
cout << endl;
}
}
else cout << "khong chia duoc" ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBhcnJbMjBdLCBub2ZzID0gMDsKCnZvaWQgZ2VuKGNvbnN0IHZlY3RvcjxpbnQ+ICZtdmMsIHZlY3RvcjxzdHJpbmc+ICZyZXMsIGludCBuLCBpbnQgaSA9IDApCnsKICAgIGlmIChpID09IG4pIHsKICAgICAgICBpbnQgYSwgYjsKICAgICAgICBzdHJpbmcgczsKICAgICAgICBpbnQgc3Vtb2ZhID0gMCwgc3Vtb2ZiID0gMDsKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgbjsgKytqKSB7CiAgICAgICAgICAgIGlmIChhcnJbal0gPT0gMCkgewogICAgICAgICAgICAgICAgcy5wdXNoX2JhY2soJ0EnKTsKICAgICAgICAgICAgICAgIHN1bW9mYSArPSBtdmNbaV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzLnB1c2hfYmFjaygnQicpOwogICAgICAgICAgICAgICAgc3Vtb2ZiICs9IG12Y1tpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc3Vtb2ZhID09IHN1bW9mYikgewogICAgICAgICAgICByZXMucHVzaF9iYWNrKHMpOwogICAgICAgICAgICArK25vZnM7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgYXJyW2ldID0gMDsKICAgICAgICBnZW4obXZjLCByZXMsIG4sIGkgKyAxKTsKICAgICAgICBhcnJbaV0gPSAxOwogICAgICAgIGdlbihtdmMsIHJlcywgbiwgaSArIDEpOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGludCBuOwogICAgdmVjdG9yPGludD4gbXZjOyAvLyBzdG9yZSBpbnB1dCBzZXF1ZW5jZQogICAgdmVjdG9yPHN0cmluZz4gcmVzOyAvLyBzdG9yZSByZXN1bHQKICAgIGNpbiA+PiBuOwogICAgbXZjLnJlc2l6ZShuKTsKICAgIHJlcy5yZXNpemUobik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIHJlc1tpXS5yZXNpemUobik7CiAgICAgICAgY2luID4+IG12Y1tpXTsKICAgIH0KICAgIGdlbihtdmMsIHJlcywgbik7CiAgICBpZiAobm9mcyA+IDApIHsKICAgICAgICBjb3V0IDw8IG5vZnMgPDwgZW5kbDsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5vZnM7ICsraSkgewogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47ICsraikgewogICAgICAgICAgICAgICAgY291dCA8PCByZXNbaV1bal0gPDwgIiAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGNvdXQgPDwgImtob25nIGNoaWEgZHVvYyI7CiAgICByZXR1cm4gMDsKfQ==