INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A # INCREASE X INCREASE X INCREASE X PRINT X REPEAT A TIMES ( # Check if X == 1: if floor(X/2) == 0, then X == 1 (since X >= 1) CLEAR I2 CLEAR S2 REPEAT X TIMES ( CLEAR T INCREASE T REPEAT S2 TIMES ( CLEAR T ) CLEAR S2 REPEAT T TIMES ( INCREASE S2 ) CLEAR U INCREASE U REPEAT S2 TIMES ( CLEAR U ) REPEAT U TIMES ( INCREASE I2 ) ) # If I2 == 0, then X == 1, so skip processing # Use flag C: C = 1 means continue, C = 0 means stop # Check if I2 == 0: L = 1, REPEAT I2 TIMES (CLEAR L), L == 1 if I2 == 0 CLEAR L INCREASE L REPEAT I2 TIMES ( CLEAR L ) # L == 1 if I2 == 0 (X == 1), L == 0 if I2 != 0 (X > 1) # Set C = 1, then if L == 1, clear C CLEAR C INCREASE C REPEAT L TIMES ( CLEAR C ) # C == 0 if L == 1 (X == 1), C == 1 if L == 0 (X > 1) # Only process if C == 1 (X != 1) REPEAT C TIMES ( # Compute parity R = X mod 2 CLEAR R REPEAT X TIMES ( CLEAR T INCREASE T REPEAT R TIMES ( CLEAR T ) CLEAR R REPEAT T TIMES ( INCREASE R ) ) # Save parity to P CLEAR P REPEAT R TIMES ( INCREASE P ) # If X is even (P == 0): X = X / 2 CLEAR G INCREASE G REPEAT P TIMES ( CLEAR G ) REPEAT G TIMES ( # Compute I = floor(X/2) CLEAR I CLEAR S REPEAT X TIMES ( CLEAR T INCREASE T REPEAT S TIMES ( CLEAR T ) CLEAR S REPEAT T TIMES ( INCREASE S ) CLEAR U INCREASE U REPEAT S TIMES ( CLEAR U ) REPEAT U TIMES ( INCREASE I ) ) CLEAR X REPEAT I TIMES ( INCREASE X ) PRINT X ) # If X is odd (P == 1): X = X * 3 + 1 REPEAT P TIMES ( # Compute Y = X * 3 + 1 CLEAR Y REPEAT X TIMES ( INCREASE Y INCREASE Y INCREASE Y ) INCREASE Y CLEAR X REPEAT Y TIMES ( INCREASE X ) PRINT X ) ) )