f :: Integer -> Integer f 0 = 0 f n = f (n `div` 2) + (n `mod` 2) solve' :: Integer -> Integer -> [Integer] -> [Integer] solve' x n l | n == 2 ^ 31 - 1 && f n == x = n : l | n == 2 ^ 31 - 1 = l | f n == x = solve' x (succ n) (n : l) | otherwise = solve' x (succ n) l solve :: Integer -> [Integer] solve x = [fromIntegral (length [t | t <- l, t /= 0]), sum l] where l = solve' x 0 [] main :: IO () main = do x <- readLn let ans = solve x putStrLn $ show (head ans) ++ " " ++ show (last ans)