def gutyoku(N:int, K:int): cnt = 0 for i in range(2 ** (N-1), 2**N): S = bin(i)[2:].zfill(N).replace('0', 'A').replace('1', 'M') if S.find('MMA') != -1: cnt += 1 if cnt == K: return S def verify(N:int, K:int): # moji = 3 # lastk = 1 # k = 1 # d = 2 # a = 1 # b = 1 # while (k < K): # lastk = k # temp = a + b # a = b # b = temp # k = k * 2 + d # d += b # moji += 1 # MMA__s = 2 ** (moji-3) # MA___s = k - MMA__s - MMA__s + 1 - lastk # if K == 1: # return '110' # if lastk + MA___s >= K: # はじめの MA___ の中 # cnt = lastk # start = 2 ** (moji-1) # elif lastk + MA___s + MMA__s >= K: # 中盤の MMA__ の中 # return '110' + bin(K-lastk-MA___s-1)[2:].zfill(moji-3) # else: # 終盤の MMM__ の中 # cnt = lastk + MA___s + MMA__s # start = 7 * 2 ** (moji-3) cnt = 0 for i in range(0, 2**18): S = bin(i) if '110' in S: cnt += 1 if cnt == K: return S[2:] return '' def after(N:int, K:int) -> str: S = verify(N, K).replace('0', 'A').replace('1', 'M') return 'A' * (N - len(S)) + S N, K = map(int, input().split()) print(after(N, K))