How is it done? Even I make mistakes when simulating it myself.