{-# LANGUAGE OverloadedStrings #-} main :: IO () main = solve <$> readLn >>= putStrLn solve :: Int -> String solve n = f [(n, "")] where f [] = "" f ((x, s) : rs) | x == 1 = s | (x - 1) `mod` 6 == 0 = f (((x - 1) `div` 3, 'B' : s) : ((x - 1) `div` 2, 'A' : s) : rs) | (x - 1) `mod` 3 == 0 = f (((x - 1) `div` 3, 'B' : s) : rs) | (x - 1) `mod` 2 == 0 = f (((x - 1) `div` 2, 'A' : s) : rs) | otherwise = f rs