Provided the list of connected nodes, how would you get the list of all available Start, End pairs?
Implement all_start_end_pairs(graph). The input is a dictionary mapping each node to its directly connected nodes, and nodes may appear only as neighbors. Return every distinct ordered [start, end] pair where end is reachable from start, excluding pairs with identical nodes, sorted lexicographically.
Signature: all_start_end_pairs(graph)
Example: {"A": ["B"], "B": ["C"], "C": []} returns [["A", "B"], ["A", "C"], ["B", "C"]].
Constraints: Node labels are strings, edges form a finite directed graph, and duplicate connections may appear.
def all_start_end_pairs(graph):