: hs-step ( x -- y ) dup odd? [ 3 * 1 + ] [ 2 / ] if ; : hs ( x -- seq ) [ dup 1 > ] [ [ hs-step ] keep ] produce swap suffix ; : longest ( n -- pair ) iota [ hs length ] map [ supremum ] keep [ = ] with find 2array ; ( scratchpad ) 10 5 ^ longest . { 77031 351 }