Problem:
Sum of Numbers

Write a program which reads an integer and prints sum of its digits.

Input

The input consists of multiple datasets. For each dataset, an integer x is given in a line. The number of digits in x does not exceed 1000.

The input ends with a line including single zero. Your program should not process for this terminal symbol.

Output

For each dataset, print the sum of digits in x.

Sample Input

123
55
1000
0

Sample Output

6
10
1

Solution in Haskell (judge verdict: Memory Limit Exceeded)

module Main where
--import Debug.Trace
import Data.List
import Data.Char
import Data.Array
import Data.Maybe
import Data.Ord
import Control.Monad

solve :: [Int] -> [Int]
solve [] = []
solve (x:xs) = iter x: solve xs where
    iter x = case divMod x 10 of
        (q, r)  | q == 0 -> r 
                | otherwise -> r + iter q

readLine:: IO [Int]
readLine = fmap (map read . words) getLine
                
readUntil :: ([Int] -> Bool) -> IO [[Int]]
readUntil eof = iter where
    iter = readLine >>=
            (\a -> if eof a then return [] else fmap (a:) iter)
            
eof :: [Int] -> Bool
eof (x:xs) = all (==0) [x]

main :: IO() 
main = do
    l   <- readUntil eof
    mapM_ putStrLn $ map show (solve (concat l))