code: def update_remaining(self, u, v, aux_graph=None):
      # decrement remaining nodes, modify auxiliary graph if in phase3
      if aux_graph is not None:
          # remove edges from auxiliary graph
          aux_graph.remove_edge(u, v)
      if self.remaining_degree[u] == 1:
          del self.remaining_degree[u]
          if aux_graph is not None:
              aux_graph.remove_node(u)
      else:
          self.remaining_degree[u] -= 1
      if self.remaining_degree[v] == 1:
          del self.remaining_degree[v]
          if aux_graph is not None:
              aux_graph.remove_node(v)
      else:
          self.remaining_degree[v] -= 1
  
imports: import heapq
  import math
  from itertools import chain, combinations, zip_longest
  from operator import itemgetter
  import networkx
  from networkx.utils import py_random_state, random_weighted_sample
label_desc: Use image node_id 3 for calling the DegreeSequenceRandomGraph obj's underlying member method code with example usage: obj.update_remaining(u, v, aux_graph) without return types