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 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, 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 E
INCREASE E
REPEAT C TIMES (
CLEAR G
INCREASE G
CLEAR E
)
)
)
# if E=1, current X was odd and we need to multiply it by 3, and plus 1
REPEAT E TIMES (
CLEAR D
REPEAT N TIMES (
REPEAT Y TIMES (
INCREASE D
)
)
INCREASE D
)
CLEAR X
REPEAT D TIMES (
INCREASE X
)
PRINT X
)
)