<｜begin▁of▁sentence｜>### Instruction:
Imagine you're mapping out the complex web of social interactions within a school environment, where each child is a node and friendships are the edges connecting them. You have documented a particular set of interactions: [(1, 2), (1, 3), (2, 3), (3, 4), (4, 5), (5, 1)]. To better understand the close-knit groups within this social network, perhaps to tailor group health interventions or social learning activities, you're looking to identify all the tightly-knit circles of friends, where each member is friends with every other member in their group.

How would you apply the 'find_cliques' function within the NetworkX toolkit to uncover all these fully-connected friendship circles, each representing a maximal clique within the social graph you've mapped?
### Response:
import networkx as nx

# Create an undirected graph
G = nx.Graph()
# Add edges
G.add_edges_from([(1, 2), (1, 3), (2, 3), (3, 4), (4, 5), (5, 1)])

# Find all maximal cliques in the graph
cliques = list(nx.find_cliques(G))
print('Maximal cliques:', cliques)
<|EOT|>
