900003
SBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSCBSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBC
