#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const double pi = acos(-1);
#define FOR(i,a,b) for (ll i=(a),__last_##i=(b);i<__last_##i;i++)
#define RFOR(i,a,b) for (ll i=(b)-1,__last_##i=(a);i>=__last_##i;i--)
#define REP(i,n) FOR(i,0,n)
#define RREP(i,n) RFOR(i,0,n)
#define __GET_MACRO3(_1, _2, _3, NAME, ...) NAME
#define rep(...) __GET_MACRO3(__VA_ARGS__, FOR, REP)(__VA_ARGS__)
#define rrep(...) __GET_MACRO3(__VA_ARGS__, RFOR, RREP)(__VA_ARGS__)
template<typename T> ostream& operator<<(ostream& os, const vector<T>& v) {
REP(i,v.size()){if(i)os<<" ";os<<v[i];}return os;}
template<typename T> ostream& operator<<(ostream& os, const vector<vector<T>>& v) {
REP(i,v.size()){if(i)os<<endl;os<<v[i];}return os;}

int main() {
ll n,input;
string input2;
cin>>n;
vector<ll>hight(n);
map<ll,string>m;
rep(i,n){
    cin>>input2;
    cin>>input;
    hight[i]=input;
    m[input]=input2;
}
sort(hight.begin(),hight.end());
cout<<m[hight[n-2]]<<endl;
}
#include <bits/stdc++.h>
using namespace std;

vector <string> solve(int x) {
  if (x == 1) {
    vector <string> tmp{"AB"};
    return tmp;
  }
  vector <string> a, b;
  a = solve(x - 1);
  for (auto s : a) {
    string r, t;
    for (auto c : s)
      if (c == 'A') r += "AB", t += "AA";
      else r += "BA", t += "BB";
    b.push_back(r);
    b.push_back(t);
  }
  string s;
  for (int i = 1; i <= (1 << (x - 1)); i ++) s += "AB";
  b.push_back(s);
  return b;
}

int main() {
  int x; cin >> x;
  vector <string> tmp = solve(x);
  cout << tmp.size() << endl;
  for (auto s : tmp) cout << s << endl;
}
