code: def dmp_zz_wang_lead_coeffs(f, T, cs, E, H, A, u, K):
      """Wang/EEZ: Compute correct leading coefficients."""
      C, J, v = [], [0] * len(E), u - 1
  
      for h in H:
          c = dmp_one(v, K)
          d = dup_LC(h, K) * cs
  
          for i in reversed(range(len(E))):
              k, e, (t, _) = 0, E[i], T[i]
  
              while not (d % e):
                  d, k = d // e, k + 1
  
              if k != 0:
                  c, J[i] = dmp_mul(c, dmp_pow(t, k, v, K), v, K), 1
  
          C.append(c)
  
      if not all(J):
          raise ExtraneousFactors  # pragma: no cover
  
      CC, HH = [], []
  
      for c, h in zip(C, H):
          d = dmp_eval_tail(c, A, v, K)
          lc = dup_LC(h, K)
  
          if K.is_one(cs):
              cc = lc // d
          else:
              g = K.gcd(lc, d)
              d, cc = d // g, lc // g
              h, cs = dup_mul_ground(h, d, K), cs // d
  
          c = dmp_mul_ground(c, cc, v, K)
  
          CC.append(c)
          HH.append(h)
  
      if K.is_one(cs):
          return f, HH, CC
  
      CCC, HHH = [], []
  
      for c, h in zip(CC, HH):
          CCC.append(dmp_mul_ground(c, cs, v, K))
          HHH.append(dmp_mul_ground(h, cs, 0, K))
  
      f = dmp_mul_ground(f, cs ** (len(H) - 1), u, K)
  
      return f, HHH, CCC
  
imports: from sympy.external.gmpy import GROUND_TYPES
  from sympy.core.random import _randint
  from sympy.polys.galoistools import gf_from_int_poly, gf_to_int_poly, gf_lshift, gf_add_mul, gf_mul, gf_div, gf_rem, gf_gcdex, gf_sqf_p, gf_factor_sqf, gf_factor
  from sympy.polys.densebasic import dup_LC, dmp_LC, dmp_ground_LC, dup_TC, dup_convert, dmp_convert, dup_degree, dmp_degree, dmp_degree_in, dmp_degree_list, dmp_from_dict, dmp_zero_p, dmp_one, dmp_nest, dmp_raise, dup_strip, dmp_ground, dup_inflate, dmp_exclude, dmp_include, dmp_inject, dmp_eject, dup_terms_gcd, dmp_terms_gcd
  from sympy.polys.densearith import dup_neg, dmp_neg, dup_add, dmp_add, dup_sub, dmp_sub, dup_mul, dmp_mul, dup_sqr, dmp_pow, dup_div, dmp_div, dup_quo, dmp_quo, dmp_expand, dmp_add_mul, dup_sub_mul, dmp_sub_mul, dup_lshift, dup_max_norm, dmp_max_norm, dup_l1_norm, dup_mul_ground, dmp_mul_ground, dup_quo_ground, dmp_quo_ground
  from sympy.polys.densetools import dup_clear_denoms, dmp_clear_denoms, dup_trunc, dmp_ground_trunc, dup_content, dup_monic, dmp_ground_monic, dup_primitive, dmp_ground_primitive, dmp_eval_tail, dmp_eval_in, dmp_diff_eval_in, dmp_compose, dup_shift, dup_mirror
  from sympy.polys.euclidtools import dmp_primitive, dup_inner_gcd, dmp_inner_gcd
  from sympy.polys.sqfreetools import dup_sqf_p, dup_sqf_norm, dmp_sqf_norm, dup_sqf_part, dmp_sqf_part
  from sympy.polys.polyutils import _sort_factors
  from sympy.polys.polyconfig import query
  from sympy.polys.polyerrors import ExtraneousFactors, DomainError, CoercionFailed, EvaluationFailed
  from sympy.utilities import subsets
  from math import ceil, log
label_desc: Use image node_id 18 for calling a global function with example usage: dmp_zz_wang_lead_coeffs(f, T, cs, E, H, A, u, K) and returns: f,  HHH,  CCC, f,  HH,  CC