#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==