═╩ valнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкг]p.Hц╝ ]\Щ-Jа1╛у ю\╙.╓аd╙; КYл,!юd╙В ≈\/убм╛⌠ ь]0уб╪╜'┘]O/Гю,╗3─Y,Ю©п╘~сXs+÷╫╧╕╟qXЪ*╦╫╟╖ИXXs*e╬╖o/Xb+Я╬╖╘vёW ,Жб┤╡╠yБZдЬзФ╔?²~)@■л(╥i╠:ПиЩ╞i ·] 1│дф╚S D\F/а╟╗▒YМ-фюn╗ ЕW ,а<╗N?XP-юб╕V╘YG.ъюа╖Л┴XF/╪б█╙З─Yy.жа╟╗ЛX┼-ъюШ╖5╘Y─/8ц├╘╖VZg/Ъа÷╗иZg/еб·╘n┬Z0zб╘═hY/rб≈╗.YW┌-фюx╕УIVI,}©╔е{Uz, ю6╕лВU⌡,u╬┌ёBTS*╗╪K═├ЩnQ╟&8╦Б°xЗGN>%╦Ш° ШNOw%╦≈²сЫкMw%⌡╦²ЩЬ│M&i╧╟²сЫЧL$Z╥G⌡'Ь?Mз%у╦░°┐В9K.$╫╥╒ )ЖщK╙${╥┬⌡YЬiL╒#╤╣э≥AЖОJ┴#(╥? kУBJ`#B╤│ ■Ж1Kщ"╤ ≥ЖJ╓!3╢м≈ТоI/#!╤a≥}СгHQ"√╢В√,РvG"┘╣Н≈СHj!▌╢)≈√СJq#В╤P ЬТ K&i╧P Ж⌠Lа%╔╤)≈ЦП5EфЁu■╙ОoE ├ЁK∙║О╧E А╡╖■тНD:╟╡\■ Н=E f╡п⌠&ОШE9!+╢s≈ЪЖ┐V3=≤эых▀+ЪRKkк[║ЯЩW÷1▀б║ В╛KE&Н╥В√йП▌GЁ"K╣!√йПG#╤╣K∙О EB UЁх⌠ЁМOD{ ]Ё ⌠zМ_D DЁИ⌠┌М=E╣ mЁ\■кН F@"S╣п■⌠МE@"d╢+■┼НШEq"2╣А⌠уЛ╧E#:╤∙УМ E╓!u╢╟⌠УМюGV%▀╥п■QМnFЁ#l╣·■╚М E'"╢$⌠IЛ`C ╠╠Щ▐пХ A я╡N▒ИХ╔?╞Л╞▌=ФS>яH╝:▄_Е╖=┤╝Ь▀XЦШ:?╫╛L┼8ЦE;Gk╛┼мА≤:X╤╚╦┬╔Юp9д╙f┬ъЮЛ8╛Й┬SЮ▒9?²╚╟┬╓Аб:.)╛+┴╔ЮO9Q·╘║├╕чY7I·╘x├Ищ 6sЗ╗л└UщЖ6Z3╘л└═э@7▀n╗┌└Бшъ4ъБ╖У└ШшЪ5[╧╕д┐зшZ5dШ╖┌└_ш15└┤╖ё┐Бш6kа╖I┐-шs5[п╘р├+чЕ7щ©╙╘├щ7⌠г╙╒┘║з√3√ ╖┐│ыИ2Пз╖┐┌Еь;3"Б╖z┐ ы©3Sx╕:│'ь3|╖╣│Щь█4Ъб╕─iьQ6Я╨╨s║░9k;S╣ЮK╙бОДB&╨;∙√ИA╝╡╞ь┴tЮС:─┐╛ш├яэЖ6⌠п╘щ┐ты15╥╘Н┌знкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнкнк