@staticmethod
def backward(ctx, grad_output):
    (shape,) = ctx.saved_tensors
    narg = [((0 - p[0]), (grad_output.shape[i] + (shape[i] - p[1]))) for (i, p) in enumerate(ctx.arg)]
    return inner_slice(grad_output, narg)
@staticmethod
def backward(ctx, grad_output):
    (shape,) = ctx.saved_tensors
    narg = [((0 - p[0]), (grad_output.shape[i] + (shape[i] - p[1]))) for (i, p) in enumerate(ctx.arg)]
    return inner_slice(grad_output, narg)