def all_dag_paths(adj):
    if not adj:
        return []
    output, path = [], [0]
    def visit(u):
        if u == len(adj) - 1:
            output.append(path.copy())
            return
        for v in adj[u]:
            path.append(v)
            visit(v)
            path.pop()
    visit(0)
    return output
