starting p() initial, n=1 p() outside initial, n=2 call p again p() outside initial, n=3 finished