<｜begin▁of▁sentence｜>### Instruction:
Imagine we are mapping the journey of a crucial human rights petition as it navigates through various bureaucratic layers, symbolized by a network with designated paths from one office (node) to the next. This network has been digitally outlined in the form of a directional flowchart with specific connections: starting from the initial submission office (node 0), to the first point of review (node 1), progressing to a higher level of legislative consideration (node 2), and potentially looping back for further examination (from node 2 to node 1).

Envision that we require a comprehensive examination of this process using a technique akin to a depth-first search (a meticulous approach akin to navigating a labyrinth, checking each avenue and its branches to its end before retreating to explore alternate routes), commencing from the petition's point of origin. As we simulate this exploration, we would like to classify the interactions between offices: whether they represent a forward push of the petition, a revisiting of a previous point for refinement or reevaluation, or perhaps an inquiry sent back for additional information.

The goal is to utilize the capabilities of a toolkit, namely NetworkX, to methodically traverse this intricate map, starting from node 0, while annotating the nature of each connection encountered, much as one would document the different responses and actions taken at each stage of the advocacy process. This exercise is not just an academic task, as it serves as an allegory for the strategic planning we must undertake in our real-world advocacy efforts. How might we employ such a tool to effectively label each step of our petition's journey within this digitally constructed model of our advocacy network?
### Response:
import networkx as nx

# Create a directed graph
G = nx.DiGraph([(0, 1), (1, 2), (2, 1)])

# Use dfs_labeled_edges to iterate over edges
for edge in nx.dfs_labeled_edges(G, source=0):
    print(edge)
<|EOT|>
