createEdgeNPair :: Label -> Node -> Node -> GS (Edge, Edge, Node, Node)
createEdgeNPair l sn en = do (e1, sn1, en1) <- createEdgeN l sn en
                             (e2, en2, sn2) <- createEdgeN l en1 sn1
                             return (e1, e2, sn2, en2)
createEdgeNPair :: Label -> Node -> Node -> GS (Edge, Edge, Node, Node)
createEdgeNPair l sn en = do (e1, sn1, en1) <- createEdgeN l sn en
                             (e2, en2, sn2) <- createEdgeN l en1 sn1
                             return (e1, e2, sn2, en2)
createEdgeNPair l sn en = do (e1, sn1, en1) <- createEdgeN l sn en
                             (e2, en2, sn2) <- createEdgeN l en1 sn1
                             return (e1, e2, sn2, en2)