<｜begin▁of▁sentence｜>### Instruction:
Imagine you are in a computer science class, and I'm leading a lesson on graph theory using the Python library NetworkX. As part of our exploration today, we are dealing with two distinct social networks represented by graphs. Each network is described by connections, or 'friendships,' between individuals.

The first network, we'll call it "Network G," includes friendships between Person 0 & Person 1, Person 0 & Person 2, and Person 1 & Person 2. Picture these as the lines connecting these individuals in our network diagram.

Now, we have a second network, let's call it "Network H," which shows a different set of friendships: Person 0 & Person 3, Person 1 & Person 2, and Person 2 & Person 3. You'll notice some of these friendships might overlap with our first network.

Your challenge today is this: using the NetworkX library, you need to find a way to construct a new social network graph that only includes the friendships that exist in both "Network G" and "Network H". Essentially, you're looking for a shared common ground between the two networks.

Once you've created this new combined network, I'd like you to give me a rundown of all the individuals in this network along with a list of all the friendships that were common between "Network G" and "Network H".

Remember, we're not discussing the actual code or the commands in NetworkX today. I just want you to think about how this task would be done conceptually. Can you rephrase this practical scenario so that we maintain the essence of the problem we aim to solve in our lesson?
### Response:
import networkx as nx

# Create the first graph G
G = nx.Graph()
G.add_edges_from([(0, 1), (0, 2), (1, 2)])

# Create the second graph H
H = nx.Graph()
H.add_edges_from([(0, 3), (1, 2), (2, 3)])

# Create a new graph that is the intersection of G and H
R = nx.intersection(G, H)

# Print the nodes and edges in the intersection graph
print('Nodes in R:', R.nodes())
print('Edges in R:', R.edges())
<|EOT|>
