1 of 2

axo, 13 bytes

[:|[1+{#;1;-_

Try it online!

This started out as a port of the alternative solution in my Wumpus answer, but that resulted in 18 bytes. After golfing it down to 13 here, the details actually ended up being quite different. The basic idea is still the same, but I'm working with 0 and 1 instead of 1 and 2 (incrementing it only for printing). I'll add a full explanation tomorrow when I'm sure I can't golf this any further.