Using the hook version, you can do with a single forward and two backwards.

Can I have a way to control how the autograd engine do backward propagation?

There is but what you’re asking for here is a bit weird. It breaks one of the main assumption which is that if you had a Tensor foo during the forward, then the quantity being backpropagated for it is another Tensor of the same size.
In this case, you actually want two values to flow back at once for the top of your graph. So you implicitly do two backward passes. It is just that it is not explicit in your math.