f n i | i * i == n = i | otherwise = i + n `div` i main = do n <- readLn print . sum . map (f n) . filter (\i -> n `mod` i == 0) $ takeWhile (\i -> i * i <= n) [1..]