999999
BCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBSCBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCSBCS
