show(io::IO, g::Graph) = print(io, "{$(g.nn),$(g.na)} Graph")
show(io::IO, a::Arc) = print(io, "Arc $(a.u) -$(a.key)-> $(a.v)")
show(io::IO, ait::ArcIter) = print(io, "ArcIter $(ait.len)")
function show(io::IO, path::Path)
    if !isempty(path)
        res = "Path {$(path.nodelist[1])}" # first
        for k in eachindex(path.keylist)
            res *= " -$(path.keylist[k])-> {$(path.nodelist[k + 1])}"
        end
        print(io, res)
    else
        res = "Empty Path"
        print(io, res)
    end
end