%%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
    \>>
  \>>
\>>
