<｜begin▁of▁sentence｜>### Instruction:
Given two graphs G and H with node sets [{0, 1, 2}] and [{0, 1, 2, 3}] respectively, and edges [(0,1), (0,2), (1,2)] in G and [(0,3), (1,2), (2,3)] in H, plus a node attribute 'key1' with value 5 for node 0 in G, and node attribute 'key2' with value 10 for node 0 in H, can you perform a disjoint union of G and H ensuring that the nodes remain unique, provide the resulting node information with attributes and the edges of the union graph?
### Response:
import networkx as nx

# Create two graphs
G = nx.Graph([(0, 1), (0, 2), (1, 2)])
H = nx.Graph([(0, 3), (1, 2), (2, 3)])

# Add a node attribute to Graph G
G.nodes[0]['key1'] = 5

# Add a node attribute to Graph H
H.nodes[0]['key2'] = 10

# Use the disjoint_union function to combine the graphs
U = nx.disjoint_union(G, H)

# Print node data including the attributes
print(U.nodes(data=True))

# Print edges of the new union graph
print(U.edges())
<|EOT|>
