code: def backward(self, indexes, grad_outputs):
      F = chainer.functions
      (xmul,) = self.get_retained_inputs()
      (y,) = self.get_retained_outputs()
      (gy,) = grad_outputs
      axis = self.axis
  
      gxadd = _flipcumprodsum(xmul, gy, axis)
      _, gxmul = F.split_axis(gxadd, (1,), axis)
      y, _ = F.split_axis(y, (-1,), axis)
      gxmul *= y
      return gxmul, gxadd
  
file_path: chainer/chainer/functions/math/cumprod.py
imports: import six
  import chainer
  from chainer import backend
  from chainer import function_node
  from chainer.functions.array import flip
  from chainer.utils import type_check
label_desc: Use image node_id 3 for calling the Cumprodsum obj's underlying member method code with example usage: obj.backward(indexes, grad_outputs) and returns: gxmul,  gxadd