$ENTRY Go { = ; } Hailstone { 1 = 1; s.N, : { 0 = s.N >; 1 = s.N >>; }; }; ShowHailstone { s.N, : e.Seq, : s.Len s.1 s.2 s.3 s.4 e.X s.D4 s.D3 s.D2 s.D1 = ' has ' ' elements,\n' 'starting with ' s.1 s.2 s.3 s.4 'and ending with ' s.D4 s.D3 s.D2 '.'>; } FindLongest { s.Max = ; s.Max s.Max s.Long s.Len = s.Long s.Len; s.Max s.Cur s.Long s.Len, : e.CurSeq, : s.CurLen e.X, <+ s.Cur 1>: s.Next, : { '+' = ; s.X = ; }; }; ShowLongest { s.Max, : s.Long s.Len = ' which has the longest' ' hailstone sequence is ' '.\n' 'The length of its Hailstone sequence is ' '.'>; };