import System.IO
import System.Environment


main :: IO ()
main = do
    [a] <- getArgs
    r <- readFile a
    let ls = lines r
        a = noAdjacentBlankLines ls
        b = concat $ combineGroups $ group [] a
    putStrLn $ unlines b

noAdjacentBlankLines [] = []
noAdjacentBlankLines [a] = [a]
noAdjacentBlankLines ("":xs@("":_)) = noAdjacentBlankLines xs
noAdjacentBlankLines (x:xs) = x:noAdjacentBlankLines xs

group :: [String] -> [String] -> [[String]]
group acc [] = [acc]
group acc ("":xs) = reverse ("":acc) : group [] xs
group acc (x:xs) = group (x : acc) xs

combineGroups :: [[String]] -> [[String]]
combineGroups [] = []
combineGroups (x@(('<':_):_):xs) | gs <- map trim x
                                 , ns <- trim $ unwords gs
                                 , length ns < 80 = [ns ++ "\n"] : combineGroups xs
combineGroups (x:xs) = x:combineGroups xs

trim :: String -> String
trim = x . x
   where
     x = dropWhile (==' ') . reverse