code: def add_operators(num, target):
      """
      :type num: str
      :type target: int
      :rtype: List[str]
      """
  
      def dfs(res, path, num, target, pos, prev, multed):
          if pos == len(num):
              if target == prev:
                  res.append(path)
              return
          for i in range(pos, len(num)):
              if (
                  i != pos and num[pos] == "0"
              ):  # all digits have to be used
                  break
              cur = int(num[pos : i + 1])
              if pos == 0:
                  dfs(
                      res, path + str(cur), num, target, i + 1, cur, cur
                  )
              else:
                  dfs(
                      res,
                      path + "+" + str(cur),
                      num,
                      target,
                      i + 1,
                      prev + cur,
                      cur,
                  )
                  dfs(
                      res,
                      path + "-" + str(cur),
                      num,
                      target,
                      i + 1,
                      prev - cur,
                      -cur,
                  )
                  dfs(
                      res,
                      path + "*" + str(cur),
                      num,
                      target,
                      i + 1,
                      prev - multed + multed * cur,
                      multed * cur,
                  )
  
      res = []
      if not num:
          return res
      dfs(res, "", num, target, 0, 0, 0)
      return res
  
label_desc: Use image node_id 1 for calling a global function with example usage: add_operators(num, target) and returns: res, res