#include using namespace std; using ll = int64_t; ll N, K; void input() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> N >> K; } vector CNT; void kthMMA(ll l, ll k, string& ret) { if (CNT[l-1] >= k) { kthMMA(l - 1, k, ret); ret.push_back('A'); } else if (CNT[l-1] + CNT[l-2] >= k) { kthMMA(l - 2, k - CNT[l-1], ret); ret.push_back('A'); ret.push_back('M'); } else { ll bit = k - CNT[l-1] - CNT[l-2] - 1; ret.resize(l - 2, 'A'); while (bit > 0) { ll b = __builtin_ctz(bit); ret[b] = 'M'; bit &= bit - 1; } ret.push_back('M'); ret.push_back('M'); } } void solve() { CNT.resize(N + 1, 0); CNT[3] = 1; CNT[4] = 4; for (ll i=5; i<=N; ++i) { if (CNT[i-1] >= K) CNT[i] = K; else CNT[i] = CNT[i-1] + CNT[i-2] + (1ll << (i - 2)) - 1; } string ret; kthMMA(N, K, ret); reverse(ret.begin(), ret.end()); cout << ret << "\n"; } int main() { input(); solve(); return 0; } /* 考察 長さ N の MMA 文字列は, ・先頭が A ,後ろ N-1 文字が MMA文字列 CNT[N-1] ・先頭が MA ,後ろ N-2 文字が MMA文字列 CNT[N-2] ・先頭が MM ,後ろ N-2 文字が A を 1 個以上含む文字列 2^(N-2)-1 */