%%HP: T(3)A(R)F(.);

\<<
  
  \-> r l \<<
    
    r l + 2 / FLOOR ROLL                
    l ROLL                              
    IF DUP2 > THEN SWAP END            
    l ROLLD r ROLL                      
    IF DUP2 > THEN                      
      r                                 
    ELSE
      SWAP r ROLLD l ROLL               
      IF DUP2 > THEN SWAP END         
      l                                
    END
    ROLLD
    
    r 3 + SWAP                          
    l 3 +                               
    WHILE                               
      WHILE 1 + DUP2 PICK < REPEAT END  
      SWAP ROT
      WHILE 1 - DUP2 PICK > REPEAT END 
      ROT DUP2 >                        
    REPEAT                              
      DUP2 SWAP ROLL SWAP ROLLD         
      DUP2 ROLL OVER ROLLD
      DROP ROT SWAP                     
    END
    DROP 2 - SWAP OVER ROLLD            
    IF r DUP2 - -18 < THEN              
      SWAP DUP 'r' STO 1 + QPART r      
    ELSE
      DROP
    END                                 
    IF 2 - l DUP2 - 18 > THEN           
      QPART
    ELSE
      DROP2
    END                                 
  \>>
\>>
