+ visitableNovel = neighbours \\ visited -- if we're not returning to a small cave
+ visitableReturning = if returned == Nothing
+ then (S.filter isSmall neighbours) `S.intersection` visited -- returning to a small cave already visited
+ else S.empty
+ newPathNovel next = Path next trail' visited' returned
+ newPathReturning next = Path next trail' visited' (Just next)