import           Control.Monad
import qualified Data.ByteString     as B
import           Data.Char
import           Data.List
import qualified Data.Set            as S
import qualified Data.Vector.Unboxed as VU

readInt :: IO [Int]
readInt = map read . words <$> getLine

readIntlines :: Int -> IO [[Int]]
readIntlines n = map (map read . words) <$> replicateM n getLine

main :: IO ()
main = do
    [n] <- readInt
    putStrLn . reverse $ solve n

solve :: Int -> String
solve n
  | n > 0 = let m = if (n `mod` 26) > 0 then n `mod` 26 else 26
             in chr (m + 96) : solve ((n - m) `div` 26)
  | otherwise = []
