201084
SBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSCBSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBC
