<｜begin▁of▁sentence｜>### Instruction:
Imagine you're organizing a seminar on nutrition, with a series of lectures that must follow a specific sequence, where each lecture builds upon concepts introduced in earlier ones. You've mapped out a plan using a directed graph, where each node represents a lecture, and the edges indicate the prerequisite relationships: a directed edge from Lecture A to Lecture B means Lecture A must come before Lecture B.

To make sure the sequence flows correctly and each topic is introduced at the right time, you could use a method akin to organizing the lectures into "nutritional layers." Each layer represents a stage of information that should be fully addressed before moving on to the next. A tool from NetworkX called 'topological_generations' could help arrange these layers so that every lecture is strategically placed; earlier generations won't contain any advanced concepts that haven't been covered yet, and later generations won't introduce any foundational topics that should've been addressed at the start.

Can you restructure this educational graph into these informational layers using 'topological_generations', ensuring all prerequisite lectures for any given topic are already covered in earlier layers?
### Response:
import networkx as nx

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

# Stratify the graph into topological generations
generations = [sorted(generation) for generation in nx.topological_generations(DG)]

# Print the topological generations
for i, generation in enumerate(generations):
    print('Generation {}: {}'.format(i, generation))
<|EOT|>
