%%HP: T(3)A(R)F(.); \<< DUP TYPE 3 IF \=/ THEN DUP TYPE 5 IF == THEN OBJ\-> ELSE DEPTH END \->ARRY END DUP SIZE OBJ\-> 2 IF == THEN * END \-> array size \<< 'array' 1 GET DUP 2 size FOR n 'array' n GET DUP ROT MIN SWAP ROT MAX SWAP NEXT SWAP OVER - \-> min range \<< 1 range 1 + START { } NEXT 1 size FOR n 'array' n GET DUP min - 1 + 2 OVER + ROLL ROT + SWAP ROLLD NEXT 1 range START + NEXT \>> \>> \>>