data Shortest b a = Shortest { distance :: a, path :: [b] } deriving Show