PRINT X # constant, N=3 INCREASE N INCREASE N INCREASE N # constant, M=enough INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE M INCREASE F # flag, F=1 while we need to continue REPEAT M TIMES ( # if X=1, F=0 and no more action CLEAR Y REPEAT X TIMES ( CLEAR Z REPEAT Y TIMES ( INCREASE Z ) INCREASE Y ) CLEAR F REPEAT Z TIMES ( CLEAR F INCREASE F ) # if F is not 0, we continue REPEAT F TIMES ( # copy X to Y, Y=X CLEAR Y REPEAT X TIMES ( INCREASE Y ) # try to divide X by 2 CLEAR D # potential result of division CLEAR E # flag, E=1 if not divisible by 2 CLEAR G INCREASE G # flag, G=1 while we need to continue REPEAT M TIMES ( REPEAT G TIMES ( # G=1 or G=0 INCREASE D # subtract 2 from X, result is in X CLEAR B REPEAT X TIMES ( CLEAR C REPEAT B TIMES ( INCREASE C ) INCREASE B ) CLEAR B REPEAT C TIMES ( CLEAR X REPEAT B TIMES ( INCREASE X ) INCREASE B ) ) # checking if X is equal to 0 (if X=0, G=0) CLEAR G REPEAT X TIMES ( CLEAR G INCREASE G ) # checking if X is equal to 1 (if X=1, E=1 and G=0) REPEAT G TIMES ( CLEAR B REPEAT X TIMES ( CLEAR C REPEAT B TIMES ( INCREASE C ) INCREASE B ) CLEAR G CLEAR E INCREASE E REPEAT C TIMES ( CLEAR G INCREASE G CLEAR E ) ) ) # if E=1, X was odd and we need to multiply it by 3, and plus 1 REPEAT E TIMES ( CLEAR X REPEAT N TIMES ( REPEAT Y TIMES ( INCREASE X ) ) INCREASE X PRINT X CLEAR X REPEAT N TIMES ( REPEAT D TIMES ( INCREASE X ) ) INCREASE X INCREASE X CLEAR D REPEAT X TIMES ( INCREASE D ) ) CLEAR X REPEAT D TIMES ( INCREASE X ) PRINT X ) )