Skip to content

Instantly share code, notes, and snippets.

@tdwright tdwright/Watch this
Created Nov 27, 2018

Embed
What would you like to do?
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////////////////////////////////////////////////////////////////////////``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////////////````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;;;;;;;;;;////`````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;///```//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````//////////////`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````///;;;;;;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````////;;;;;;;;;;;;;;;;;;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;]>;;;[;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]<>;;++;++++;;;++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++;;++++@@>;-]@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++.@@@@@@@>+++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++[<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;;;;;+++@@@@@@@@@@@@@@@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@<.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++[@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]<;-@@@@@@@@@@@@@@@@@@@@@..>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@<.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++[@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--------@@@@@@@@@@@@@@@@@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++[@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;;++@@@@@@@@@@@@@@@@@>-]@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+@@@@@@@.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-@@@@@@@@@@@@@@@@@@@@@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++@@@@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++[@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--------@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--------@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++[@@@@@@@@@@<;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++@@@@@@@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++@@@@@@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@<--.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++@@@@@@@@@@@@@@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@<.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++@@@@@@@@@@@@@@@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@@@@@.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;----@@@@@@@.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@@@@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++[@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++@@@@@@@@@@@@@@@@@>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-@@@@@@@@@@@@@@@@@@@.>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++;;;;[<;;;;;;;;;;;;;;;````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--------->;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;]@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;;-------@@@@@.@@>;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++[@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++@@@@@@@@@@@@>;;;;;;;;;;;;;;;```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++@@@@@@@@@@@@@@@@@@@@@@.>;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@@@@@@@@@@@@@@@@@@@@@@<++;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;----@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;----@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@>;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;;;;;;;;;;;;;;++[@@@@<+++@@@@@@@@@@@@@@@@@@@@@>-]@<;;-.>+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;-;;;;;;-------->-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;----@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@;@@@;;;;;;;;;;@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;;;;;;;;;;;;;@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////////////////////////////;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;//////////////////////////////////////////////////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/////////////////////////////////////////////////////////////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;////////////////////////////////////////////////////////////////////////////;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/////////////////////////////////////////////////////////////////////////////////////;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/////////////////////////////////////////////////////////////////////////////////////////////;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;///////////////////////////////////////////////;;;;/;///////////////////////////////////////////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;/;;@@@@@@@;;;;//////////////////////////////;;;;;;/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///////////////////////////////////////;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;///```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@/``//;;@;;;//////////////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//;;;;//////////////////////////////////;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;//////`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;/`````/;////////////////////////////;;//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///////////////////////////////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;//////```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;/``///////////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////////////////////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;/////``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;/////////////////////////;//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//////////////////////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////////////////////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@;;/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@;@;;@@@@@@@@@@@@@@@@;@@@;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;/;////////////////////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@;;;////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;@@;;;;;;@@;@@@;;;;;@@@@@@@@@@@;@;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////////////////////;;;;;;;;;;//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@;;;/////////////////;;;;;;;;;;;;;;;;;;;;;@;;;;@;;@;@;@;@;;@@@@@@@@;@@;;@@;;//`//;;@@;;;@@@;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///////////////////////;;;;;;//```````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;////////////////;/;;;;;;;;;;;;;;;;;;;@@@@@@@;;;;;@@@@@@@;;@@@@@;@@;;@;@@;/```````/;@@;@@@@;@@@@@@@@@@@@@@@@@@;;@;;;;;;;;;;;;;;;;;;;;;;/;///////////////////;;;@@;;//````````````````````````/;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;;////////////////;;;;;;;;;;;;;;;;;;;@@@@@@@@@;;@@@@@@@@@@@@;;;;;;;;;;@;;;@;/``````````;@;@@@@;@@@@@@@@;;;;@;;@@@;;@@;;;;;;;;;;;;;;;;;;;;;;///////////////////////;@@@@;;/``````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;///////////////;;;;;;;;;;;;;;;;;;;@;;@@;;;;;;@;;;;;;;;;@@@@@@@@;;;;;;;;;;@;/```````````/;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;/;///////////////////;;;@@@;;//```````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;///////////////;;;;;;;;;;;;;;;;@@@@;;@;;;@@@@@@@@@;;;@;;;@@;;;@@;;;@;;;;;;@@;`````````````/@@@;;@;;;@;@@@@@@;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;///////////////////;;;@@@;;//````````````````/;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;//////////////;/;;;;;;;;;;;;;;@@@@;@@@@@;;;@@@@@@@@@;;;@;;@;;;;@;@@@@;@@@@;;@;/`````````````/@@;@@@@@@;;@@;@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;;;///;///////////////;;@@;;;;//``````````````/;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/////////////;;;;;;;;;;;;;;;;@@@@;;;@@@@@@;;;@@@@@;;@@;;;@;@@;;;;;@;@@@@@@@@@@@;``````````````/;@@@@@@@@@;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;////////////////////;;@@;@;;;/````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;@@;;///////////////;;;;;;;;;;;;;@@;;;;;@;;;@@@@@;;;;;;;@;;;@;;;;;@@@@;;@;@@;;;;;;;@@@;``````````````/;@@;;;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;///////////////////;;@@;;@;;//`````````/@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;@;;////////////;//;;;;;;;;;;;;;@@@;;;;;@;@@@@@@@@;;;;;;;;;;;;;;;@@@@;;;@@@@;/`````/;@@;``````````````/@@;//////;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;///////////////////;;@@;;@@;//```````;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;@;;///////////////;;;;;;;;;;;@@@@@@;;;;;@@;;;;;;@@@;;;;;;;;;;;;;;;@@@@@;;@;@@;```````;@@;``````````````;@@/``````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;;;;;;;;;////////////////;;;@;;;@@;//`````;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;;;//////////////;;;;;;;;;;;@@@@@@@@@;;;;;@@;;;;;;;;@;;;;;;;;;;;;;;;@@@@@;@@@;@;/``````;@@;/````````````/;@;/``````/@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;//////////////////;;@@;;;@@;//```;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;/////////////;;;;;;;;;;;@@@;;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;@;/``````;@@;/````````````;@@;/``````;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;/////////////////;;@@;;;@@;///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;;;////////////;;;;;;/;;;;;@@@@;;@@@;;@@@@@@@;;;;@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;;;@@/``````/;@;;/``````````;@@@/``````/;@@;;@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;;;;;;//////////////////;;@@;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;/////////////;;;;;;;;;;@@@@@;;;;@@@;;;@@@@@@;;;;@@@@;@@@;;@;;@;;;;;;;;@@@@;;@@@@@@/``````/;@;@;/```````/;;@@;/``````/@;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/////////////////;@@@;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;;;;///////////;;;;;;;;;;;;@@@@;;;;;@@@@;;;;;;;@@;;;;@;@@;@@@@;@;;@;;;;;;;;@@@@@@@@;;;@;```````;@@;;;//```//;;@@@/``````/;@;;;@@@@@@@@@@;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;//////////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;@;;////////////;;;;;/;;;;@@@;;;;@;;@@@@@@;;;;;;;@@;;;@@;;@;;;;;;;;@;;;;;;;;;@@@@@;;;;;@@;/``````/;@;;;;;;;;;@@@@;/```````/@;;@;;@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;//////////////////;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@;;;;;;;;;;;;;;;;;//////////;/;;;;;;;;;@@@;;;@;;;;;@;@@;;;;@@;;;;;;;@;;;@@@;;;@@;@;@@@;;;;;;@@@@@@@;;;@@;/```````/;@@@;;@@@@@@@;/```````/;@;@;;;@@@@@@@@@;;@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/////////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;////////////;;;;;;;;;;@@;@@@@;@;;;;;;@@;;;;@@;;;;;;;;;@@@;;@;;@@;@@;@@@@;;;;@@@@@@@@@@@@;/`````````;;@@@@@@@@;//````````;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/;//////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;///////////;;;;;;;;;;@@;;@@@;;@@;;;;;;@@;;;;@@@;;;;;;@;;;;@@@;;@;;@@;;;;;@@@@@@@@@@@@;@@@@/``````````/;;;;;;//``````````/;@;@;;@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;///////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;///////////;;;;;;;;;;@@@@;;@@;//;@;@;;;;@@;;;;@@@@@;;;;;;;;;;;;@@@@@;;@;@@@@@@@@@@@@@@;;;@@@/``````````````/``````````````/@@@;@@@@;;@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;////////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;//////////;;;;;;;;;;@@@;@@@@@;```/@;;@@;;;@@;;;;@;;@@@@@;;;;@@;@@@;;;@;@@@@@;;;@@@@@@@@@;@@@@;````````````````````````````/;@@;@@@@@@@@@;@@@;;@@;@@@@@@@@@@@@;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;///////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;//////////;;;;;;;;;;@@@;;@;;;@;/```/;@@@;;;;;;;;;;;;;@@@@@;;;;@@;@;///;@@@@@@@;;@@@@@@@@@@@@@@@;/```````````````````````````/@@@@@@@@@@@@@;@@;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;////////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@;;;;;;;;@;;///////////;;;;;;;;@@@@@@;;;;@@/`````;@@;;@@;;;;;;;;;;@@@@@@;;@@@@@;```/@@;@@;;;@@@@@@@@@@@@@@;;;;;;;;;;;////////////////////;@;@@@@@@@@@@@@@@/```;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;///////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;@;;;//////////;;;;;;;;;@@@;;@@@;;@@;``````/;;@@;;;;@;;;;;;;;@@@@@@;@@@@@;```/;@@@@@;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@;@@;/```;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;////////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;//////////;;;;;;;;;@@;;@@;;;@;@@;/```````;;;@@;;;@@@;;;;;@@@@@;;@@@@;@;```/;@@;@@@;@@@@@@@@@@@;@@@;@@@;;@;@@@@@@;;;@@;@;;@@@@@@@@@@@@@@@@@@@@@@@;```/;@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;///////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;@;;//////////;;;;;;;;@;@@@@;;;@;@@@@/````````/@;@;;@;;@@;;;;;@@@@@;;@@;@;@;/``/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@/```/@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;///////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;@;;///////;//;;;;;;;@@@@;@@;//;@@;;@@/````````/;@@@;@;;@@;;;;;@@@@@;;@@;@;@;///;@@;@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/`/;@@@@@@@@@;@@;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;//////////////;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;@;/////////;;;;;;;;;@@;;;@@;/``/;@;;@@;;;;;/````;@@;;@@;@@;;;;;@@@@@;;@@@;;@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@/```;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;@@@@;;;;;;;;;;;;//////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;@;;////////;;;;;;;;;@@@;@;@@@/````;@;@;;@@@@@/````/;@@@@@@;;@@@@@@@@@@;;@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;//;@@@@@@@;;;;;;;;;;////////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;;;;;/////////;;;;;;;;@@@;@@;;@;`````/;@@@@;;;@@;````/;@@@@@;@@@@;;;;@@@@;;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@;@@@@@@@@@@@@@@@/```/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;```//;@@@@@@@;;;;;;;;;;///////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@;@@;/////////;;;;;/;;@@@@;;@;@@;```````;@;;;;;@@@;/````/@@;;@@@@@@;;;@@@@@;@@@;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@;/```;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/`````;@@@@@@@@@;;;;;;;;;////////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;;;/////////;;;;/;;;@@@@@;;;;@;/```````/@@@;;;;;;@;````/;@;@@@@@@@;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/``````;@@@@@@@@@@;;;;;;;;;;;//////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@;//////////;;;;;;;@@@@@@;;@@;/````````/;@;@;;@;;@;/````;@@@;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@;;@@@@@@@@@@@;@@;;;@;@@@@@@@@@@@@@@@;``````/;@@@@@@@@@@@;;;;;;;;;;;//////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;;/////////;;;;;;;@@@;@@@@;@@@;/`````````;@@;;;;@;@@/````/;@;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;``/;@@@@@@@@@@@@@@@;/`````/;@@@@@@@@@@@@@@;;;;;;;;;;//////////////;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@;;////////;;;;/;;;@@;@;;@@@@;@@;/////`````/;@;;;;@;;@;````/;@;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;/```/;@@@@@@@@@@@@@;/``````;@@@@@@@@@@@@@@@;;;;;;;;;;;//////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;/////////;;;;;;;@@;;;;;;@@@@@;@;;;@;/`````;@@;;;;;;@;/````;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;````;@@@@@@@@@@@@@@/``````;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;////////;;;;;;;@@@@@@@@;@@@@@@;@@@@@@/`````/@@;@@;;;@@/``//;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@/```/;@@@@@@@@@@@@@;``````/;@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;///////;;;;/;;;@@@@@@@@@;@@@@@@;;;@;@@;`````/;@;@@;;@;@;//;@@;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@/```;@@@@@@@@@@@@@;``````/;@@;@@@@@@@@@@@@@@@@@@;;;;;;;;;;//////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;///////;;;;;;;@@@@@@@@@@@;@@@@@@;;;@;@@;/`````;@@@;;;@;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@;//;@@@@@@@@@@@@@@/``````;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////////;;;;;;;;@;@@;;;@@@@;@@@@@;;@;@@@@@/`````/;@;;;;;;@@@@@;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@/``````/;@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;;;////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;/;;;;;;;;@;;;@;;@@@@@@;;;;;;;;;;@;@@;`````/;@;@@@;@@;;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;``````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////////;;;;;;;@@;@@;;;;@@@@@@;;;;;;;;;;;;;@;/`````/@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@;/``````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@;;;;;;;;;;;;;;;;@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;/;;;;;;;@@@;@@@;@@;;@@@@;;;;;;;@@@@@;;@;`````/;@;;;;@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@;/``````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@;;;;;;;;;;;;;;@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///////;;;;;;;;@@@@;;;@@@@;;@@@@;;;;;;@@;@;;;;@;/```/;@@;;@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;/;;@@@@@@;@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@/``````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/////////////;;@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;;;;;;;;;;;@@@@@;;;;;```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/////;;;;;;;;@@@@@;@@@@@@;;@@@@;;;;@@@@@@@@@@@@/`//;@@;@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/;;;;;@@;;;@;/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@;/`````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/////////////;;@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@;;;;;;;;;;;;;@@@@;;;;;;```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;;/;;;;;@@@;@;;;;;;;;;;;@@@@;;;;@@@@@@@@;@;@;;;@@;;@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;;/;/;;;@@;//;;///;@;;;;;;;;;@@@;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@;;/````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;;/////////////;;@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@;;;;;;;;;;@@@@@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;;;;;;;;@@@;@@;;@;;;;;;;;@@@@;;;;@@@@@@@@;@;@@@@@;@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;;;@;//;;///;;;;@;`/;;///;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@;;/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/////////////;;@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@;;;;;;;;;@@@@;;@;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///////;;;;;;;;@@;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;;;;;;;;@;`/;;;//;;;;;;`/;////;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//////////////;;@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/////;;;;;;;@@@;;;@@@@@;;;;;;;;;;;;;;;;;;;@;;;;@@;;;@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;@;;;;;;;;;;;;;@;`/;/;//;;;;;/`/;////;;;;;;;;;;;;;;;;;;;/;;;;;;;;;@@@@@@@@@@@;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/////////////;;@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;;;;;;;;@@@;;;;@@@@@;;;;;;;;;;;;;;;;;;;@@@;;@@;;@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;@;/;@;;;;;;;;;;;;;@/`/;////;;;;;/`/;////;;;;;;;;;;;;;;;;;@;/;;;;;;;;;;;;;;@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;;/////////////;;@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///////;;;;;;;@@@;@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@;;@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@;;;@;/;@;;;;;;;;;;;;;;/`;;////;;;;;/`;;////;;;;;;;;;;;;;;;;;@;/;;;;;;;;;;;;;;;;;@@@@@@@;;;;;;/;;;@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/////////////;;@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;;;;;;;;@@@;@@@@@@@@;;;;;;;;;;;;;;;;;;@;;;;;;;@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;@;;;;;;;/;;;;;;;;;;;;;;;;/`;;////;;;;;/`;;////;;;;;;@;;;;;;;;;;;//;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;/;;;@@@@@@@@@@@@@@;/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/////////////;;@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;///;;;;;;;;@@;;;;;@@@@@;;;;;@@@@@@@@@@@@@@;@;;;;;@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;@;;;;;;;;;;;;;;@;;;;;;;;;;;;;/`;;////;;;@;/`;;////;;;;;;;;;;;/;@;/;;/;;;;;;;;;;;;;;/;;;;;;;;@@@@@@;;;;;/;;@@@@@@@@@@@@@;```/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/////////////;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;;;;;;;;;;;``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;;;;;;;@@@;@;;@@@;;@;@@@@@@@@@@@@@@@@@@;@@@;;@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;@;;;;;;;;;;;;;;;;;;;///////;;//;;//`/;;;;;//;;////;;;;;/;/;;;/;@;;@;/;@;;;;;;;;;;@;/;;;;;;;;;;@@@@@@;;/;;/;;@@@@@@@@@@;````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;//////////////;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;;;;;;;;@@@;;;;;@;;;;@@@@@@;;@@@@@@@@;@@@@@;;@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@;/;;;;;;;;;;;;;/////////;;;;;;;;`/;;//`/;;;;;`/;;//`/;;;;;///////;;/;;;/;@;;;;;;;;;;@;/;;;;;;;;;;;;;;@@@;;;;/;;;@@@@@@@@;/````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;////////////;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;;;;;;;;@@@@@;;@;@;@@@@;@@@@;;@@@@@@@@;;@@@@;@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@;;;;;/;;;;;;;;;/////;;;;;;;;@@;;;;;`/;;//`/;;;;;`/;;//`/;;;;;;;;;;;/////;//;;;;@;/;@;;;;/;;;;;;;;;;;;;;;;;;@@;;;;/;;;@@@@@@;/```;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;/;;;;;;@@;;;;@@@;;;@@@@@@;@@@@@@@@@@@@@@@@;@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@;;;;@;/;;;;;////;;;;;;;;;;;;;;;;;;@;`/;;//`;;;;@;`/;;//`/;;;;;;;;;;;;;;;///////;;;;;;/;@;/;;;;;;;;;;;;;;;;;;;;@;;/;;;;;@@@@@@;/`/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;;@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;/;;;;;;@@@;@;;@@@;;;@@@;@@;;;;;@@@@@@@@@@@;@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;;;;;;;;//////;;;;;;;;;;;;;;;;;;;;;;@;`/;;//`;;;;@;`/;;//`;;;;;;;;;;;;;;;;;;;;//////;;;;;;//;;;;;;;;;;;;;;;;;;;;@@;;;/;;;;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//////////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;/;;;;;;@@;;@@@@@@;;;@@@@@@@;;;;@@@@@@@@;;;@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;;;;;;;;;;////;;;;;;;;;;;;;;;;;;;;;;;;;@;`/;///`;;;;;;`/;;//`;;;;;;;;;;;;;;;;;;;;;;;;/////;;;/;;;/;;;;;;;;;@;/;;;;;;;@@;;;/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;////;;;;;;;@@;;;;;@@@@;;;@@@@;;@@@;;@@@@@@@@;@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;@;;;;;;;///;;;;;;;;;;;;;;;;;;@@@@@@@@@;;;/`/;///`;;;;;/`/;;//`;;;;;;;@;;;;;;;;;;;;;;@;;;;//////;@;;;;;;;;;;;;/;;;;;;;;;;@;;;/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////////;@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;;;;;;;;;@@;;;;@@@;;;;;;;;@@@;@;;@;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@;/;@;;;;///;;;;@;;;;;;;;;;;;@@@@@@@@@@@@@;;;/`/;///`;;;;;/`/;;//`;;;;;;;@@@@@@;;;;;;;;;;;;@;;;;///;;/;@;/;;;;;;;/;@;;;;;;;;;@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//////////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;///;;;;;;;;@@;;;;@@@;;;;;;;;;@@;@;//;@@;@;@;;@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@;;;;/;;///;;;;@;;;;;;;;;;;@@@@@@@@@@@@@@@@@;;;/`/;///`;;;;;/`/;///`;;;;;;;@@@@@@@@@@@;;;;;;;;;;;;;;;///;;;;;;/;@;//;;;;;;;;@@;;;@;;/;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;;;;;;;@@;@;;;@@@;;;;;;;;;@;@;/``/@@@;;@;@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;@@@@@;;;;;;////;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;/`/;////;;;;;/`/;////;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;@;;////;;;/;@;/;;;;;;;;;;;;@;;@;;/;;;;@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;;;;;;;@@@@;;;;@@@;;;;;;;;;;@@/````;@@;;;@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;/;@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;/`/;////;;;;;/`/;////;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;@;;;////;@;/;;;;;;;;@;/`;;@;;;;;;/;;;;@@@@@@@@@@@;``/;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;///;;;;;;;@@@@@;@@@@@@@@;;;;@@@@@@;````/;@;@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;/;;//@@;;;;;;;;;;@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/`;;////;;;;;/`/;////;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;@;;;///;;/;;;;;;;;@/``;;;;;;;;;;/;;;;@@@@@@@@@/````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;////;;;;;;;@@@@;;@@@@@@@@;;;;@@@@;@@/```/;@;@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;;;/`;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;/`;;//`/;;;;;/`;;////;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;@;;;///;;;;;;;;@;/`/;;//;@@;@;;/;;;;@@@@@@@/`````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////;;;;;;;@@;;;;;;@@@;;;;;;;;;;;@@@@;/`/;@;@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/;/`/@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@;/`;;//`/;;;;;/`;;//`/;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;;@;/`/;;////@@;;@;;/;/;;@@@@@@/```/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;//;;;;;;@@@@;;;@;;;;;;;;;;;;;;;;;;@@;/;@@;@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;;;;`/;@;;;;;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;@;/`;;//`/;;;@;`/;;//`/;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@/``/;;//`;;;;;;@;;;/;;;@@@@@/``/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;////;;;;;;@@@;;@@@@;;;;;;;;;;;;;;;;;;@;@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//;;/;/`/;;;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@;``;;//`/;;;@;`/;;//`/;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;@;/`/;;//`/;;;;;;;@@;;/;;;@@@@@;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;///;;;;;;;@@@;;;@@;;;;;;;;;;;;;;;;;;@;;;;@;@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@/`/;/;/`/;;;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;`/;;//`/;;;@;`/;;//`/;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;/`/;;////;;;;;;;;;;@;//;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;;;;;;;@@@@@;;@;;;;;;;;;;;;;;;;;;;@;;;;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@;;@;`/;;///`/;;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;`/;;//`;;;;@;`/;;//`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;;;;;;;@;``/;///`;;;;;;;;;;;;@;;/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;;@@@;@@;;;;;;;;;;;;;;;;;;;;;@;;@;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@;;@;/`/;///`/;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;`/;;//`;;;;;;`/;;//`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;;;;@;/`/;;////;;;;;;;;;;;;;@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;//;;;;;;;;@@;;;;;@;;;;;;;;;;;;;;;;;;;;@@;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;@/`/;;//``/;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;`/;///`;;;;@/`/;;//`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;;;;;/``;;////;;/;;;;;;;;;;;@;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;///;;;;;;;@@;;;;;@@;;;;;;;;;;;;;;;;;;;;@;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;;;;;@;``;;///`/;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@/`/;///`;;;;@/`/;;//`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;;@;``/;///`/;/;;;;;;;;;;;;;;@;;/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;///;;;;;;@@;;;;;;;;@;;;;;;;;;;;;;;;@@@@;@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;@;;;;;;;/`/;;//``/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;///`;;;;;/`/;///`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;/`/;;////;;;;;;;;;;;;;;/;;;@;;/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;//;;;;;;;;@;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;;;;@;``;;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;///`;;;;;/`/;///`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;/``;;///`;;/;;;;;;;;;@;//;;;;@;;;;;;@@@@@@@@@@@;/;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;;;;;;;@@;;@@@;;;;;;;;;;;;@@;;;;;;;;;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;;;;;;;;;/`/;///``;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;////;;;;;/`/;///`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;``/;;//`/;;;;;;;;;;;;;//;;;;;;@;;/;;;@@@@@@@@@/``/;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;;;;;;;@@;@@;;;@;;;;;;@;;;;@;;;;;;;;;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/;;;;;;;;;;/``;;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;////;;;;;/`/;///`;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;;////;;;;;;;;;;;;;//;@;;;;;;;;//;;@@@@@@@;/````/@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;///;;;;;;@@@@;;//;;@;;;;;@;;;;;;;;;;;@;@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;//;@;;;;;@@;;;``/;///``;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;//`/;;;@;/`/;////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``/;////;;;;;;;;;;;;;;/;;;;;;;;;;@;//;;@@@@@@/`````;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;;;;;;;;@@;;;````/;;@;;;;;;;;;;;@;;@@;;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@;;/;;;;;;;;@@@;;;/``;;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;/`;;//`/;;;@;/`/;////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;/`/;;//`/;;;;;;;;;;;;;/;;;;;;;;;;;@;;//;;@@@@@/````/;@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;//;;;;;;;@@@@;``````/;;@;;;;@;;;;;;@@;;;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@;;/;;@;;;;@@@@@;;;;/`/;///``;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;/`;;//`/;;;@;/`;;//`/;;;@;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;;////;;/;;;;;;;;;;//;@;/;;;;;;;;;;;//;;;@@@;/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////////////;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;///;;;;;;@@;@;/````````/;@;@;;@;;;;;@@;@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;//;;;;;;;@@@@@@@;;@/`/;////`/;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@;@;@@;/`;;//`/;;;@;/`;;//`/;;;@;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``/;///`/;/;;;;;;;;;;;//;;/;;;;;;;;;;;;;//;;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;;;;;;;@;@@/``````````/;;@@;;@;;;;@;;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;/;;;;;;;;@@@@@@@@;;@;``/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;@;;@;``;;//`/;;;@;`/;;//`/;;;@;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@;/`/;;////;;;;;;;;;;;;;;;///;;@;;;;;;;;;@;;/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;//;;;;;;;@@@@;```//````````/;@@;;;;;;;;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/;;;;;;;@@@@@@@@@;;;;;/`/;////`/;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@;;@;`/;;//`/;;;@;`/;;//`/;;@@;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;/``/;////;;/;;;;;@@@;;;;@;//;;;/;;;;;;;;;;;;/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;;;;;;;@;@;/``/;;/````````/;@@;;;@@;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///;;@;;;;@@@@@@@@@;;;;;;;``/;///`/;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;@;@;`/;;//`/;;@@;`/;;//`/;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;``/;///`/;;;;;;;;@@@;;;;;;;//;/;;@;;;@;;/;@;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;///;;;;;;@;@@/``/;@@;;/```````/;@;;;@;;@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;@;;;;;@@@@@@@@;;;;;;;;;/`/;///``;@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;@@@;`/;;//`/;;@@;`/;;//`/;;;@@;;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@;/`/;;////;;/;;;;;;@@@@@;;;;;;///;;;/;;;;/;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;///////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;/;;;;;@@;@;```;@;;@@;/```````/;@;;;;@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/;@;;;;@@@@@@@@;;;;;;;;;;@/``/;///`;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;`/;///`/;;;@;`/;///`/;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/``/;///`;;/;;;;;;@@@@@@@;;;;;;//;;/;;;;/;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;;;;;;;;@;@;/``/;;;;;;;;/``````/;@@;;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;@;;;;@@@@@@@@;;;;;;;;;;;;;/`/;////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;@;`/;///`/;;;@;`/;///`/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;``/;/////;;;;;;;;;;@@@@@@@;;;;;;;//;@;;/;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;//;;;;;;;@;@@;```/;@@;@;@@;;/`````;@@;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@;/;;@;;;;@@@@@@@@;;;;;;;;;;;;;;/``;;//;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;``////`/;;;@;``;///`/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``;;///`;;;;@;;;;;;;@@@@@@@;;;;;;;/;;;/;;;;;;;;@;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////;;;;;;@@;@;/````/;@@;;;;@@;/```/;;;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@;/;;@;;;;@@@@@@@;;;;;;;;;;;;;;;;;/`/;;;;;;;;;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;/////////;@@;/`////`//;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;//;///`/;/;;;;;;;;;;;@@@@@@@;;;;;;;////;@;;;;;;;;;//;;@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;@;@@;``````/;@@;;;@;@;/``;@;;@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@;/;;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;//;;;;;;;;@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@;;/;;;///;;@;;@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;;;;;;/////`;;;;;;;;;;;;;;;@@@@@@@@;;;;;;//;@;/;;;;;;;;;//;;@@@@@@@;/``/;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;;;;;;;@@;@@;/``````/;;@;;;;@;/`/;@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;/;;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@;;@@@@;;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//`/;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;/;;/;;;;;;;;;;;/;;@@@@@@;/````;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;;@@;;@;/````````/;@;;@@/``;@@;@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;/;@;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;//;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;@;;;;;;////;;;;;;;;;;;;;;;;;@@@@@@@;;;;;;//;;@;;;;;;;;;;/;;@@@@@/`````;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;;;;;;;@@;@@;@;/````````/;@@@;``/@@;@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//;;;;;;;;;;;;;;;;;;@@@@@@@;;;;;;/;@;/;;;;;;;@;/;;@@@@@/````/@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;;@;;@@;@@;/````````/;;;/``;@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;@;//;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;/;/;;;;;;;;;;;/;;@@@@;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;/;;;;;;;@;;@;;@;;@;//````````//``;@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;@;/;////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;;@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@;;;;;;/;;@;;;;;;//;;/;;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;//;;;;;;@@;@;//;@;;@@;/``````````/;@;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;//;@;//;;;/;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////;@;@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@;@@@;;;;@;//;;/;;@;//;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;/;;;;;;@;@;/``/;@;;@@;/````````/;@;@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;//;;;;@;;@@;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;//;@;//;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@;;;;;///;;@;//;;@;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;//;@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;;;@;````//;@;;@;;/``````;@;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;/;;;//;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@//;@@@//;;;;@@;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;@@;;;;;//;;;//;@;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@;/```/@@@@@@;;;;;;;;;///////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;//;;;;;;;@;;@/``````/;@@;@@;/```//@@;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@;//////;@;///;;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;@;@;/;;///;@@;@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@;;;;;;/;;//;@;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@;;/`````/;@@@@@@;;;;;;;;///////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;@@;@;/```````/;;;;@@;;//;@@;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@;/;@;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;/;@@//;;//;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;@@;//;;////;@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;///;@;;;;;;;;/;;@@@@@@@@@@@@@@@@@@;;/````````;@@@@@@;;;;;;;;////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;@@@@;/`````````/;@;;@@@@@@;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;@@@@@@;/;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;@@@;;;@@;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;//;@;/;;//;;//;@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@;@@@;;;;;//;@;;;;;;;;;//;;@@@@@@@@@@@@@@@;;/``````````/@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;@@;;@;/``````````/;;@;@@;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;/;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;////;@;///;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;//;//;;;;;;;;/;;@@@@@@@@@@@@@;;/```````````/;@@@@@@@;;;;;;;;////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;;;;;;;@;;;@;````````````/;@;;;;@;@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;@;/;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@;////;@;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@;;/;;;;@;//;@@;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;//;;@;;;;;;;//;;@@@@@@@@@@;//```````````//;@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@@;;;@;````/`````````/;@;;;@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;@@@;@;//@@;/;@@@@;@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;/;@;/;;;;;;;/;;@@@@@@@@;//```````````/;;@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;;@;;;@@;```/;;/````````/;@;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@;//;@;/;@@@@@@@;@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;//;/;;;;;;@;;/;;@@@@@;/````````````/;;@@@@@@@@@@@@@;;;;;;;;////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@@;;;;@;///@@@;/````````;@;@@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;/////;@@@@@@;@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;//;@;;;;;;;;/;;@@@@@/``````````//;@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;@;;;;@;@@;@@;;@;/```````;@;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@;@@;///;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;/;@;;;;;;;;;/;;@@@@/````````//;@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@;@;;;;;;@@;;;;;@;;/````/;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@;@;@@@;@@;@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@;;;;;/;/;;;;;//;/;;@@@@;/`````//;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;@@;;;;;;;;;;;;;;;@@;/```;@;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;//;;@;///;;;/;;@@@@/```//;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;/;;;;;;@@;;;;;;;;;;;;;;@;;;@;//;@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;/;;;//;;;;;/;;@@@@;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;;@;@;;;;;;;;;;;;;;;;;;@@@@@;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;/////;;;;;;;/;;@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;@@@;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;//;;;;;;;;;/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@;;;;;;;;;;;;;;;;;;;@@;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@;;;;@@@;;;@@;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;@;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;@@;///;;@;;;;;;@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@;;;;;;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;/;;;/``//;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;@;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;/;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;/``//;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;@@@@;;@;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;@@@@;;;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;//;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;/;;/```//;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;@@@@@@;@@;@;@@@@@@;;;;@@@@@;;@@@;@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;;;;//`/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;/;;/```///;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;@@@@;;@@@@@;;@@@@@;@@@@@@@;;@@;@@;@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@;@@;;;;;;;;;/`/`//;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;//;;;;;//``////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;//;;;;@@;@@@@@@@;@@@@@@@@@@;;;@@;;@;;@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;////``/;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@/``/;;/;//```///;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@//;;//;;/;@@@@;@@@@@;@;@;@@@@@@;;@@@@@@;@@@@@@@@@@@@@@@@@;@@;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@;;;;;///```/;;///;;@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/;///////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;/``//;////```////;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;/;;//;;/;@@@@;;;;;;@;;@@@;;;;;@;;@@@;@@@@@@;;@@@@@;;@@;@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;///```/;;;////;;@@@@@@;//`/@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/``////////```///;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;//;;;;;//;;;;;;;;;;///;@@@@@;;//;;;;;;;;;;@;;;;;;;;;;;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;//````/;;;//////;;;@@@;/`````;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;@@;@;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;/```///////```////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;////;;;;/;;;;;///;@;///;@@;@@;///;;@;;///;@@;//;;;;///;@@;;@@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;//````//;;/////`///;;@@@;/`````;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```////////```///;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////;;;/;;;;////;@;;;/;;@@@;/;//;@@@@;//;@@;;;@@@;;//;;@@@@;////;;@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;//````//;;/////``/;;/;;@@@;/```//;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@;@@@@@@@@@;;;;@;/````///////```/;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;////;;;/;;;/////;@;;;//;@@@;;;//;@@@@;;/;@;;;@@@@;;;//;@@@@;///;@@@;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;////``//;;/////``/;@@;/;;;@@@;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@;;;@@@@@@@;;;;;;;;/```////////`/;;;;;;@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;;;;;/;;/;;//;;@;;;;/;;@;/;;//;@@;@@;//;;;@@;@@;;;//;@@@;;;;/;@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;///````/;;;/////`//;@;;;;/;;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;@@@@;;;;;;;;;;/````///////`/;;;;@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;@;;;/;;;@;//;@@;;@;/;;@;;;;//;@@;@@;;//;;@@@@@;;;;/;;@@;;;;/;@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;;;;;;;;//;/`````/;;;/////``/;@;;/;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;@;;;;;@;;;;;/````///////;;;;;@@;///;@@;@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@;;@@@@;;@@;;//;@@;/;@@@;;@;//;;;;@;//;@@;@@@;//;@@;;@@;;;;//;@@;;;;/;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;;;/////;/``/;;;/////``/;@@;/;;;@;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@;;;;;/```/////;;;;;@@;/;;//;;@;@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@;;;@;;;/;@;///;@;/;@@@@;;@;;/;;;;@;//;@@;@@@;///;@@@@@;;;;//;@;/;;//;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@;;//`////;@//;;;////``/;@;;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;////////////;;@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;@@@@@;;;;;/```//;;;;;;;@;//@@;//;;@@@@@@@@@@@@@@@;;;@@;;;@@@@@@@@@@@@@@@@@@@;@;;/;@;/////;;//;@@@;;@@;///;@@;/;;@@@;@;;;//;@@;@@;;@@;/;;;;@;//;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;////////`/@@;;/////`/;@@;/;;;;;;;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@;;;;;;//``/;;;;;@@@;/;@@@@//;@@@@@@@@@@@@@@;;@@;;@@@@@@@@@@@@@@@@@@@@@;;;@;;;@;/////;;/;;@@@;;@@;//;@@;;/;;@@;@;;;;;//;@@@@;;;@;//;;;@;//;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;/////////////;;;////`/;@@;;;;;@;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;@;;@@;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;@@@@@;;;;;;;;;/`/;;;;;;@@;/;@@;@;/;@@@@@@@@@@@@@@;@@;;/;@@@@;;@@;;;@@@@@@@@@;;;@@@@@@;;/;;@@;;@@@;;;@@;//;@@@;/;;@;@@;;;@;//;@@@@;;;@;///;@@;//;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@@@@@@;;////////////;;;;;//`//;@;;/;;;;;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@;;;;;;;;;;;;;;;;@;;@;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;//;;;;;@;@;;//;@;//@@@@@@@@@@@@@@;@@;////;@@@;@;;@@@@;;@@@@@@;@;;@@;;;@;;;@;@@@@;;;;;;@@;/;@@;;/;;@@;;/;@@@;//;@@@;;@@;;//;@@;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;//////////////;@@;@/`/;@;;/;;;;;;;;;;;;;;@;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;/;;;;;;;@;;;;;;;;;;;;;;@;;;;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;@@@@@;;;;;;;;;;;;;;;;;;@;;@@;//;//;@;@@@@@@@@@;@@;@@;``/`/;@@@;@@@@@@;;;@;@@@;@;;@@;;;;;/;;/;@@@;;;;;;;@;;@@;;//;;;;;/;;@@@;//;;@@;;@@@;/;@@@;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;;;/////////////////;@@@;;;@;/;;;;;;;;;;;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@@;;;;;;;;;;;;;;@;``//;@;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;;@@;/;;;;;///;@@@@@@@@@@@;@;;@@;/`//``//;@@;;@;;@;@@@@@@@;@;;;@@;;;/;;;;;@@@@@;@;;;@;;@@;;;;;;;;;;;;@;;;;;;;;;;;;;@;;;@;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@;;;///////////////////;@@@@@;/;;;;;;;;;;;;;;;;;;;///;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;@;/````;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;@@@@@;;;;;;;;;;;;;;;;;@@//;;//;;;;@@@@@@@@@@@@@@;@@;///;///`//;@@@;;@;@@@;@@@@@@;;;@@@@;;;;@;@;@@@@@@@@;;@@@@@@@@@@@@@@@;@;;;;;;;;;;;;;@;;@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;@@@@@@;;//`/////////////////;@@@;;;;;;;;;;;;@@;;;;;;;////;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;@;/```/;@@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@;;;;;;;;;;;;;;;;;@;/;;////;@@@@;@@@@;;;;;@@;@;//;;/////``/;@@@;@;@@@;@@@;@@@@;;@@@@;;@@@@@@@@;;;;@@@;;;@;;;;;;@@@@@@;;@@@@@@@@@@@@@@@@@;;@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@@@@;;;////////////////////;@@@;;;;;@;;;;;;@@@@;;;;;////;@;;/;@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////;//////;;@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;/``/;@@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;;;;;;;;;;@@//;//;;//;;;@@@@@@;@@@@;@@;/`/;///////``/;@@@@@@@;;@;;;@@@@;;@@;@;;;@;;@@;@;;@@@@;;@@@;@@@@;;@@@@@@;@@;@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;//`/////////////////;@@@;;/;;@@;;;;;;@@@@@;;;;;//;@@;;;/;;@@@@;//``/;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;;;;;;;;;;;;;@;;;@@;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@;@@@@@@@;;;;;;@@@@@@;;;;;;;;;;;;;;;;;@@;///;@@//;@@@@@@@;;@@@@;@;/``///////////`/;;@@@@;;@@@;@@;@@@;;@;@@@;;;;;;;@@;;@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@;;;@@@@;;@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;@;;;////////////////////;;@@;;;;;@@@;;;;;;;;@@@@@;;;;/;;;;;;;/;;@@@;/`````;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@;;;;@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;;@@@@;//;;;/;@;@@@@@@@@@@@@@@;``/////////////`//;@@@;;;@@@@;@@;;;@;@@;;;@;;;;;@@;@@@@@;@@@@@@@@@@@@;@@@;;;@@@@;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;@@@@@;;//`/////////////////;;@@;;;@@@@@;;;;;;;;;;@@@@@;;;;//;//;;;//;@@@;``````;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/;/////////;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;@;;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@;@@;;;//;;@@@@@@@@@@@@@@@;/``//////////////``/;@@@;;;@;;;;;;;@@@@@;;@@@@;;;;@;;@@@@;@@@@@@@@@@@@;@@@@@@@;;@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;@@@@;;/////////////////////;@@@;;@@@@@;;;;;;;;;;;;@@@@@@;;@;//;;@;;;/;@@@;/```//@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;@@@@@;@@;/;;@;@@@@@@@@@@@@@@;/``///////////////``/;@@@;@@@@;@@;@@@@@@@@@@@@;;;;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;@;@@;;;/////////////////////;;@@;;;@@@@;;;;;;;;;;;;;;;@@;@@;;;;/;;;;;;;/;;@@@;//;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;/;;;;;@@@@@;;;;;;;;;;;;;;;;;@@@@@@;@@@@@@;@@@@@@@@@@@@@;@;/``////////////////`/;;@@@;;;@;;;;;;@@@@@@@@@;;;;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@;;;;;;;;;;;;@@@;;;//`///////////////////;@@;;;;@@@@;;;;;;;;;;;;;;;;@@@@@;;;;//;;//;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////////////;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;/;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@;@@;@@@;;;@@@@@@@@@@@@;/``////////////////`//;@@@@@@;;;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@;;@;@@@;;//`///////////////////;@@@;;@;;;@@@;;;;;;;;;;;;;;;;@@;@@;;;;;//;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//////////;;@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;/;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@;@@@@@@@@@@@@@;@@@@@@@@@;;;@@;/``////////////////``/;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;@;;@@@@;;//`///////////////////;;@@;;;@@;;;@@@@;;;;;;;;;;;;;;;;@@@@@;;;;//;@;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;;@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@;@@@@@;@@@@@@@@@@@@@@;;@;@@;/``////////////////``/;@@@;;@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;;@;;;///////////////////////;@@;;;;@;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;;@@@@@@@;;@@@@;@@@@;@@@@@@;@@;;@;;@@;/``/////////////////`//;@@@;;@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;@@;;//`////////////////////;;@@;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;@@@@;;;@;////;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@;/``/////////////////`//;@@@;@;;;;@@;@;@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@;@@@@;;@@@@@;;//`/////////////////////;@@;;;@@;;;;@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;@;//;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@;/``/////////////////``/;@@@;;@@;;@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@;;;;;;@@@@;;////////////////////////;@@;;;@@@@@@@@@@@@;@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;@@;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@;/``/////////////////``/;;@@@;;;;@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@;;;;@;@;@;;;;//`/////////////////////;;@@;;;@@@@@@@@@@@@@@@@;@;;;;;;;;;;;;;;;;@@@@@;;;;;/;;////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;@;;;@@;/``//////////////////`/;;@@@@;@@@@;@@;;;;;;;@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;@@;;@@@;;;;;@;@@;;//``/////////////////////;@@;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;;////;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;/////////;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;;;@;/``//////////////////`//;@@@@;@@;;@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;@@@;;@;;//`//////////////////////;;@;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;@;//;;@@;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@;/``//////////////////`//;@@@;@@;;@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;;;;@;@@;;//////////////////////////;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@;;;@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@;;@;/``//////////////////``/;@@@@;@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@;;@;;;//`///////////////////////;;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@;;;//;//;;;;;@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@;;;;;@@;/``//////////////////``/;;@@@;@;;;;;;@@@@;;;;@@@@@@@@;;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;//``//////////////////////;;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;@@@@;;;;;//;;;;;/;@@@@;;////;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;;@@@@;;;;;@@;/``///////////////////`//;@@@;@@@;@@@@@;;;;;@@@;@@@@;;;;@;;@@;@@@@@@@@@@;;;;;;;;;@@;@@;@@@;;//``///////////////////////;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;@@@@@;;;;/;@@;;;/;@@@;/`````;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////;;@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;;@@@@;;;;;;@@;/``///////////////////`//;@@@@;;;;@@@@;;;;;@@@;@@@@;;;@;;@@@@@@@@@@@@@@;;;;;;;;@@;;;;@@;;//`/////////////////////////;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;;;/;;@@;``````/@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////////;@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;;@@@@;@@;;@;;@;/``///////////////////`//;;@@@;;;@@@@;;;;;@@@@;;;;@;;;;;@;@@@@@@@@@@@@;;;;;;;;;@;@@;;;//``////////////////////////;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/////;;/;;@@;/````/;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//////;////;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;;@@@@;@@@@;;;;@;/``///////////////////``/;;@@@@@;@@@;;;;;;;@@;;;;;@@@@;@@@;;@@@@@@@@@;;;;;;;;;;@@;;//``/////////////////////////;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;//;;;@;/;;@@@;///;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//////;////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;@;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@@@@@@@@@@@;;;;;;;;;@@;/``////////////////////`//;@@@@@;;;;;;;;;;;;;;;;;;@@@;@@;;@@@@@@@@;;;@;;;@;@@@;;//`//////////////////////////;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;@;;;/;;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;///;////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@@@@@@@@@@@;;;;;@@;;;@@;/``////////////////////`//;@@@@@;;;;;;;;;;;;@@;@;;;@@@;@@@@@@@@@@@;;@;@@@@@;;//``//////////////////////////;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;;/;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////;////;;@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@@@@@@@@@@@;;;;;@@@;@;@@;/``////////////////////`//;;@@@;;@;;;;;;;;;;;;@;//;;;@@@@@@@@@@@@@;;;;;@;;//``//////////////////////////;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////;;@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@@@@@@@@@@@;;;;;;@@;;;;@@;/``///////////////////////;;@@@;;;;;;;;;;;;@@;/``//;;@@@@@@@@@@@;@;@@;;//``///////////////////////////;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;;;;;;;;;;;;;;@@@@@;;;;//;@@;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////;;@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;@@@@;;;;;;@@;;;;@@@@@@;;;;@;/``////////////////////////;@@@@@@@@@;;;;;;@;/`/``/;@@@@@@@@@@;;@@;;//`/`//////////////////////////;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;//;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/;;////;;//;;@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;@@@@;;;;;;@@;;;;@@@@;;@@;;;@;/``/////////////////////`//;@@@;@@;@;@@;;;@;/`/`/;@@@@@@@@@@@@@;;//``////;///////////////////////;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;///////;;//;;@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;;;;;;;;;;;@@@@@@@@@@;;@;;@@@@;/``/////////////////////`//;;@@@@@@;@@;;@;////`/;@@@@@@@@@@@;;//`///////////////////////////`/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////;/;///;;@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;@@@@@@@@@@;@@;@;;;;@;/``/////////////////////////;@@@;;;@@;;@;/`//`;@@@@@@@@@@@;//``///////`/////////////////////;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;/;@@@;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////;;////;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;@;@;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;@;/``//////////////////////`//;@@@@;;;@@@;///`/;@@@@@@@@@;//``///////////////////////////`/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;/;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/////;;///;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;@;;;;;;;;;@;@@@;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;@@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@;/``/////////////////////////;@@@;@;@@;///``;;@@@@@@@;//``////////////`/;////////////`/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;////;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/////;;//;;@@;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;@;;/////////;;;;;@;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;/;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@;;@;/``/////////////////////////;;@@;@;@;///`/;@;@@@@;;/``//////////////`/;///////////`/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@@@@;;;;;;;;;;;;;;;;@@@@;;;;//;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;////;;;/;;;@@;;;;@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;/`````````````//;@;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@@;;;;;;;;;;;;;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@;@;;;;;;;@;/``/////////////////////////;;@@;;@;///`/@@@@@;;//`//////////////``/;@;////////`/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;;;;;;;;;;;;;;@@@@;;;;/;;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/////;;;/;;;@@;;;;;@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;@@;@;````````````````/;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@;;;;@@@@;;;;;;;;;;;;;;;@@@@@;;;;;;;@@@@@@@@@;;;;@@;;;;;;;;@;/``/////////////////////;////;@@@;//``/;@@@;;//`//////////////````;@@;//////``/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;//;;;;;/;@@@@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;////;;;/;;;;@@;;;@@@@@@@@;;;;@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;/````````````````/;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;;;;@@@@@@@@@;;;;@@;;;;;;@;@@;/``///////////////////;;/////;;@;/`/`/;;;;;/``//////////////``///;;@@;////`//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;///;;;;/;@@@;/````/;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;///////;;;;@@;;@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@@;/````````````````/;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@;;;;@@@@;;;;;;;;;;;;;;;@@@@@;;;;;;;@@@@@@@@@;;;;@@;;;;;;@@;;@;/``///////////////////;;/////;@;//``;;;;;/`///////////////``/////;@@;//``/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;//;;@;;/;@@@/``````;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//////;;;;@@;@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;@;/```////`````````/;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@;;;;;;;;;;;@@@@@@@@@;;;;@@;;;;;;;;;;;@;/``//////////////////;;//////;/`/`/;;@@;//////////////``/////////;///`/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;;/;@@@;`````/;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/;//;/;;;;;;@@;@@@@@@@@@@@@@@@@;@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;/``/;;;;/``/;;/``/;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;@@;;;;@;;;;;;;;;;;;;;;;@@@@@@@@;@@;;;;@;;;;;@@;/``/////////////////;;;////////``/;@@;/`///////////```///////////``//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@;@@@@@;;;;;;;;;;;;;;;@@@@@;;;;////;;/;@@@;/```//@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/;//;;;;;;;;@@;@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;/`/;@@@@;`/;@@;/`/;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;;@@;;;;;;@@@@@@@@;;;;;@@;;;;@;;;;;;;;;;;;;;;;@@@@@@@@;@@;;;;@;;;;;;;@;/``///////////`/////;;//////`/`/;@@@/`////////////////////////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;//;;;;/;@@@@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/;//;;;;;;;;@@;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;/`/;;;;@;`/;;@;/`/;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;;;;;;;;;@@;;;;@;;;;;;;;;;;;;;;;@@@@@@@@;@@;;;;@;;;;;;;;@;/``////////```/////;;//////`/`/;@@;////////////////////////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;@;/;@@;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/;//;;;;;;;;@@@@@@@@@@@@@;;;;;;;;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;``/;;;;@;`/;;@/``/;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@;@@@@;;;;;;;;;;;;;@@;;;;@;;;;;;;;;;;;;;;;@@@@@@@@;@@;;;;@;;;;@;;;;@;/``///////`````///;;;;/////`/;;;;/`/////////////////////////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;/;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;//;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;``/@;;;@;`/;;@/``/;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;@;;;;;;;;@@@@;;;;;;;;@@@@;;;;;;;;@@@@@@@@;;;;;;;;;;;@@@;;;;;;;;@;/``/////``````////;;/////``/;;;;/////////////////////////;;;@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;///////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;//;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@/``/;@;;@;`/;;;/``/;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;////////////////////////;;;;;;@;@;;;;;;;;@@@@;;;;;;;;@@@@;;;;;;;;@@@@@@@@;;;;;;;;;;;@@@;;;;;;;;;@;/``///`````````/////`//``//;;;;/`//////////////////////;;;@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;///;;;;;;;@@@@@@@@@@@@@;;;@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;@/```/;;;;/`/;@;/``;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;//```````````````````/``////////////;;@;@;;;;@@@@@@@@@@@@;;;;@@@@;;;;;;;;@@@@;;;;;;;;;;;;;;;@@@;;;;;;;@;;@;/````````````////////```/;;;;///////////////////////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;;;;@;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;////;;;;;;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;/``````````;;@;/``;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;/`````````````````````````````////`/;;@;@;;;;@@@@@@@@;;;;;;;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;;;;;;;@;@;/`````````////////////`/;;;;/`///////////////////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;////;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;/`````````/;@@;/``;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@;@@@@;;;///////////```````````````````/````/;@;;@;;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@;/```````////`////```/`/;;;/////////////////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;/;/;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@@;`````````/;;@;/``;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;//////////////////////////////`/;@@;@;;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@;/`````////////`````/``/;;/`/////////////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@@;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;/;/;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;/````````;;;@;``/;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@;;;;;;;;;;//////////////////////////////////;;@;@;;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@;;@;/```/////////```//`/`/;@;/`//////////////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;@;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;/;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@;//`////;;;;@;//;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//////////////////////////////;;;;@;;;@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@;;;;;;@;;@;/`///////////`/;;/`///@@/`/////////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;////;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;@;;;;;;;@;;;;;;;@@;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;////////////////////////////////////;@;;@@@@@;@@@@@@@@@@@;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;@;;;;;;@;///////////``/@@;//`/;@/////////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/////////////////////////;;;;;;;;;;;;;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;/;/;;;;;@@@@@@@@@@@@@@@@@;@@;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;@@@@@@;;;;;;@@;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;/``````````````````````````````````//;@@;;@@@@;@@@@@@@@@@@;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;@@@;;;;;;;@;//////////`/;@@;/``/;@////////////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/``///``````````````/``////////////////////;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;;;;//////;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;///````````````````````````````````/;;@;;@@@@;@@@@@@@;;;;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;@;@;////////////`/;;///`/;@//////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/````````````````````````````/`//```````//;;@@@@;````/////////////;/;;@@@@@@;;;;;;;;;;////;/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;///////////////////////``````/;@@@;@@@@;@@@;;;;;;;;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;@;;;;;@;/`////////`/``//``/`;@;/`//////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;//``/```````````````````````````````````//;;@@@;/````````````````````/;@@@@@;;;;;;;;;;///;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;////;@;@@@@@@;;@@@@@@;;;;;;;;;@@@@@@@@@;;;;;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;@;;;@;/`////////////````/`/;@;/`/////;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;////////////////////////////`/``````````//;;@@@;`````````````````````/;@@@@@;;;;;;;;;///;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;@;@@;@@@@;@@@@@@@;;;;;;;;;@@@@@@@@@;;;;;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;@;;;@;/`///////////`//````/;@;/`////;;;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////////////////////////////////////;;@@@;`````````````````````/;@@@@@;;;;;;;;;///;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@;;@@@@@@@@@@@@@@@;;;;;;;;;@@@@@@@@@;;;;;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;@;;@@;/`////////////```///;;;/`////;;@@;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////////////////////////////////////;;@@@;/````````````````````/;@@@@@;;;;;;;;;///;;;;;;;;@@@@@@@@@@@@@@@@;@@;;;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@;;;;;;;;@@;@@@@@@@@@;@@@@;;;;;;;;;@@@@@@@@@;;;;;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;/`/////////////``//;;;//`///;;@@;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;//////////////////////////////////////////;;@@@;;////````````````````/@@@@@@;;;;;;;;;;//;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@;;;;;;;;;;;;;;;@@;;;;;@@@;;;@@;;;;@@@;;;;;@;;@@@;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;/`/////////////``/;;///```//;@;;;////;@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;`````````````````````/////////////////////;;@@@@@;;;;;;;;;///////```/;@@@@@@;;;;;;;;;///;;/;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@;;;;;@@@;@@@@;;;;@@;;;;;;@;;@@@;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;/`/////////////``;@;```/`//;;;///////;@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;````````````````````````````````````````//;;@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@;;;;;;;;;///;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;;;;;;;;;;;;;@@;;;;;@@@@@@@@;;;;@;;;;;;;@;;@@@;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;/`//////////////`/;@/`/`//;;;/```//////@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;////////////````````````````````````````//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;///;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;/;;;;;@@@@@;;;;;;;;;;;;;;;@@;@@@@;;@@@@@@;;;;;;;;;;;;@;;@@@;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@/////////////////`/@;/``//;;;/````//////;@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;;;;;;;;;;;;/////////////////////////``//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;///;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@;;;;@;;;@;/`//////////////`/;@;/`/;;;/```````/////;@@@@@@@@@;;@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;/;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@;;;;;@;@;/`/////////////`/`/;@//;;;;/``````````///;@@@@@@@@@;;@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;//;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;/;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@;;;;;@;@;/////////////////`/@;;;;;;`````````````//;@@@@@@@@@;;@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;///;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@;@@@@@@@@@@@@;;;;@@@@@@@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@@;@;;///////////////`/;@@@;;;/``````````````/;@@@@@@@@@;;@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;@@@@;;@@;;;;;;;;/`/;@@@@;;/```````````````/;@@@@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;;;;;;;;;;;;;;@@@@;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;/;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;;;;;@@@@@@@@@@@;``;@@@@@@;/````````````````/;@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;@@@@@;@;;@@@@@;/`/;@@@@@@@;////`````````````/;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;/;;;;;@@@@@@@@@@@@@@@@@@@@@@;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@;;;;;;;;;;;@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;;;;;@;@@;;@@;@;/`/;@@@@@@@@;;;;;;////////`/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;/;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;/;;;;;@@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@;;;;@@@@;;;@;@;@@@/``;@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;/;@@@;/////;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@;;;;@@@@;@@@;@;@@;/`/;@;@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;//////;;@@@/`````/;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@;;;@@;/`/@@;@@@@@@@@@@@@@@@@@@@;@;@;;@@@;;;@;@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;//////;;@@@/`````/@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@;;;;@@@@;;@@;;;@@/``;@@@@@@@@@@@@@@@@@@@;@@@;;;@;@@@@@;@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@;;;;;/;;;;/;;@@@/`````;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;/;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@;;;;;;;;@@@@;;;;;;;;@@@@;;;;;;;;;;;;@@@@@@@;;;;;;;;;;;;;;;@@@@@@;;;@@@@@@@@@;;;@;/`/;@@@@@@@@@@@@@@@@@@@;;;;@;;@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@;@;;;;//;;;;/;@@@@;;////;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;//;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;/;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@;;;;;;;;@@@@;;;;;;;;@@@@;;;;;;;;;;;;@@@@@@@;;;;;@@@@@@;;;@@@@@@@;;;@@@@@@@@@;@;@;/`/@@;;@@@@@@@@@@@@@@@@;;;;@;;@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;//;;;;/;@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;/;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;;/;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@;;;;;;;;@@@@;;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@;@@@@;;;;;;;@@@@@@@@@;;;;/``;;@@;@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;@@@@@;;;;/;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;@;;;;;;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@;;;;;;;;@@@@;;;;;;;;@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@;@;/`/;@;@;@@@@@@@@@@@@@@@@@@@@;;@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;/;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@;``;;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@;@@;;;;/;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@;/`/;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;@@@@;;;;//;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;/`/;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;@@@@;;;;//;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;@;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@;;;@;``;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;//;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;@@@@;;;;;;;;;;;;;;;;@@;;@@@@@@@@@@@@@@@@@@@@;;;;@@@@;;;;;;;;@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@;;;/`/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;;;;;;;;;@@;@@;;;;/;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;;;;@;@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;/```/;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;@@@@;;;;;;;;;;;;;;;;@@;@@@@@@@@@@@@@@@@@@@@@;;;;@@@@;;;;;;;;@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@;;;@;/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;//;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;;/;;;;;;;;;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;/```/;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;@@@@@;;;;@;``;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@;;;;//;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;;;;;;;;;;;;@@;@@@@;@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@@;;;;;;;;;;;;;;;;/``/;;;@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@;/`/;@;;@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;//;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;/;;;;;@@;;@@@;;@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;/;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;/;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@;;;@@@@@;;;;@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;;;@@;@;/`/@@;@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@;;;;//////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;;@@;;;@;;;;@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@;;;;;;;;;;;;;;;;@;@@;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;/;;;;@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@;;;@@@@@;;;;@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@;;/``;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@;;;;//;;///;@@@@;/;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;/;;;;;@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;/;;;;;@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@;;;@@@@@;;;;@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;@@;/`/;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;;@;;/;@@@/```//;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;/;/;;@@;;;;;;;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;/;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@;;;@@@@@;;;;@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;/`/;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;;;/;;;;/;;@@@/`````/@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//;;;;;;;/;;@@;;;;;@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;/;/;;;;;@@@@@;;;;;;;;;;;;;;;;;;;@@;;@@@@@;;;;;;@@@@;;;;;;;;@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@;;;;@/`/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;;;;;;;;;;;;;@@@@@;;;//;;;;/;@@@;/`````/@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;;@@;;;;;@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@;;;;;;;;;/;;;;@@@@@;;;;;;;;;;;;;;;;;@@;;@@@@;@;@@;;;;@@@@;;;;;;;;@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@@@;;;@;/`/;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;/;@@@@;///``;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;/;;;@;;;;;;;@@@@@;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@;;;@@@@@;/;;;;;@@@@@;;;;;;;;;;;;;;;;@@;;@;;;;@;@@;;;;;;;;;;;;;;;;@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@;@;;@;``;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;//;@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;///;@@;;;;;;;@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@@;@@@@;@;;;;;;;;;;;;;;;;;;@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@;@;@;@;/`/;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;;;;;;;;;;;;;;;@@@@@;;;;;/;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;//;;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;/;;;;@@@@@;;;;;;;;;;;;;;;;;;@@;@@;;;@;;;@;@@@@@@@@@;;;@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@;@@;@;@;/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;//;;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;/;;;;@@@@@@;;;;;;;;;;;;;;;;;;@;;;;;;;;@;@@;@@@@@@@@;;;@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@;@@;;;@;``;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/;;;/;//;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@;//////;;;;@@@@@@@@@@;;;@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@;@@@;;@/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@;;;;;/;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;/;;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;;;;;;;;;;;;;;@@@;//;;;//;@@;;@@@@@@@@;;;@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@;@;;;@;/`/;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;/;;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;@;/;;;;;@@@@;;;;;;;;;;;;;;;;@;;@;/;;;//;@@@@;@@@;;;@;;;;;;@@@@@;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@;@@;;;;;;@;``;@@;@@@@@@@@@@@@@@@@@@;@@@;;@;;;@;@@;;;;@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;@@@@@@@@@@@@;@;;;;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;//;;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;/;;;;;@@@@@;;;;;;;;;;;;;;;;@@@;/////;@@@;;;@@@;;;@;;;;;;@@@@@;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@;@@@@;@@@;;/`/;@;;@@@@@@@@@@@@@@@@@@@@@;@@;@@@@@@;@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@;;@@;;;;;;;;;;;;;;;;;@@@@;;;;;/;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//;;;;///;@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;@;///;@;;;;;;;@@@;;;@;;;;;;@@@@@;@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;@;;@;;;;@;/`/@;@@@@@@@@@@@@@@@@@@@@@@;@@;@@;;;@@;@@@;@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;@@@@;;@@@@@;@;;;;;;;;;;;;;;;;;@@@@@;;;;////;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;///;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@;;;;;;;;;;;;;;;;@;///;@;///;@@;@@@;;;@;;;;;;@@@@@;@@@@@@@@@@@@@@@@;;@@@@@@@@@@;@@;@@;;;;@;``;@@@@@@@@@@@@@@@@@@@@@@;@@@;;@@@;;;@@;@@@@@@@@;@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;;@@@@@;;@@;;;;;;;;;;;;;;;;;@@@@;;;;;/;;///;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;/;;;;;@@@@@;;;;;;;;;;//;;;;@;;;;;/////;@@;;;@;@@@@@@@;;@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@;@;@;@@@;@;@;/`/;@@;@@@@@@@@@@@@@@@@@@@@;@@@@;;@@@;@@;@;@@@@@@;@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;@@;///;;@@;@;@@;;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;/;;;;;@@@@@;;;;;;;;//`/;;;;;@@@;//;;@;/;@@@;;;@@@@@@@;;@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@;;;@;;;;;;@;;@;/`/;;;@@@@@@@@@@@@;;@@@;;@@@@@@@@@@;@@;@@;@@@@@;@;@@;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;//;///;;@@;@@;;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;;/;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;//;;;;;;;;@@;;;;;;;;;/```/;;;;;;@;//;@@@;/;;@@;;;@@@@@@@;;@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@@@;/;/;;;/;;/`/;;/;;;;;;@@@@;;;@;;;;@;;;@;;;;;;;@;;@;;@@;@;@@@@@;@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;@;/;@@;//;@@@@;;;;;;;;;;;;;;;;;;@;@@;;;;//;;;;//;@@@;///;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;@;;;;;;;;;;;;;;;/`````/;;;;;;@;/;@@;@;/;;@@@;;@@@@@@@;;@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@;@;////;;//;/`/;//;;///;@@@;///;;//;;//;;;;;;;;;;;;;;@;;;;;;;;;@@;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;//@@;@;//;@@;;;;;;;;;;;;;;;;;;@@@@@;;;;/;;;;;/;@@@;/```//@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;//;;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@;;;;@@@;;;;;;;;;;;;;;;;/````/////;;;;;@;/;@;;//;@;;;;;;;;;;;;@;;@@@@@@@@@@@@@@@@;@@@@;;;;;;;;;;@@;////;///;/`;;//;;/;/;@@@;/;/;;//;;//;;;;//;;//;;/;@;;;;;//;;@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;//;@@;@//;;@;;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;//;@@@;``````;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;//;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/````//;////;;;;;@;/;;///;@@;;;;;;;;;;;;@;;@@@@@@@@@@@@@@@@;@@@@;;;;;;;;;;@;@/;;/;//;/`/;;//;;/;/;@@@;///;;/;;;//;;;;//;@;;@;//@///;;//;;@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;//;;@;/;@@;;;;;;;;;;;;;;;;;;@@@@@;;;;//;;;;/;;@@@;/`````;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;///;;;;///;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/`````/;;/////;;;;;;@;///;@@;@;;;;;;;;;;;;@;;@@@@;@@@@@@@@@@@;@@@@;;;;;;;;;;;;;;;;;;;@;/`/;;;/;;;@;;@@@;;;;;///;;;//;;;;//@;;;///;;;//@;;@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;///;//;@@;;;;;;;;;;;;;;;;;@@@@@;;;;;/;;;;;/;@@@@@;//``/@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;//;;;//;;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/````//;//////`/;;;;;@;;;;@@;@;;;;;;;;;;;;;@;;@@@;;@@@@@@@@@@@;@@@@;;;;;;;;;;;;@@@@@@@@;/`;@;;;;;@@@@@@@;;@;;;;/;;;/;;;;//;@;;;/;/;;;//@;;;@;@;@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///;@;///;@@;;;;/;;;;;;;;;;;;;@@;@@;;;;//;;;;/;;@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;@@;/````/;;//////```/;;;;;;@@@@;;;;;@;;;@@@@@@@@@@@@;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;@;@@@;@/`/;@;@@@@@;;@@@@@@@@@@;@@@;;@@;@;;;@;;;;@;;;;;;@;;;@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@;/;;//;@;;;@@@;;;`///;;;;;;;;;;@@@@@;;;;;/;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;//;;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;/````/;;/////`````/;;;;;;;@@@@;;;;@;;;@@@@@@@@@@@@;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;@;;@;;@;/`/;@;@@@;;//;;;;;@;;;;;;;;;;;;;;@@;@@@@@@@@@@@@@;;@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//@@//;;;@@;@;;;/`//;//;;;;;;;;@;;@@;;;;//;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;/;;;;//;;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;@;/````/;;/////`````//;;;;;;;@@;;@@@@@@;;;;@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@;;;;;;;;;;;;@;@@;;@;/`;@@;@@@;/;/;/;;/;;/;;///;;//;;//;@@;@@@@@;;@@@;@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;/;@@//@;/;@@@;;;/```/;//;;;;;;@@;@@;;;;;/;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;//;;;//;;@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;/```//;/////`````//;;;;;;;;;;@@;;@@@@@;;;;@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@;;;;;;;;;;;;@@@;;@@/`/;@;;@@@;;;/;/;;;;//;;/;/;;/;;;//;@@;@;;@@;;@;;@@;@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;;/;;/;;@@;;;;//```/;;//;;;;;;@@@;;;;///;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;//;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@;```//;;/////````//;;;;;;;;;;;;;@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@;;@@;/`/;@;@@@@;;//;;;/;///;;///;;/;@//;;;@@@;@@@@;;;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;;//;//;@@;;;;/////```/;//;;;;;;@;;;;;;///;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//;;;;;//;;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;/`//;;/////````//;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@;;@;/`;@@;@@@@@;/;;;//;;;;;;;;;;;/;;//;;@@@@;@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;///;@@;;;;///////```/;;//;;;;;;;;;;;;;////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;//;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;///``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;@@;;;;@@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@;/`/;;;////````//;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@;;@/`/;@;;@@@@@@@@@@;@;;@@;;;;;;;;;;;;;;@;@@@@@@@@;;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;;//;@@@;;;;/////////```/;//;;;;;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;///;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;;;;@@;;;;@;;@@@;;;;;;;;;@@@@@@@@@@@@@@@@@@@;//;;/;//`````/;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;@;/`/@;@@@@@@@@@@@@@;@;;@@@@@@;@@@@@@@@;;;@@@@@@@@;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;@;;;@@;;;;///////////```/;;//;;;;;;;;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@@;;;;;;;;;;;;;;;@@;/``/;@;;@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@;;;;;;//```//;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;@@@@;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;;@;@;;@;`/;@@;@@@@@@@@@@@@@@@@@@;;@;;@@;;@@@;;@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@;;;/`/;//////////```/;//;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//;;;////;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;;;;;;;;;@@;``````;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;/````/;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;@@@@;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;;@;@;;@/`/;@;;@@@@@@@@@@@@@@@@;@;;@@@@;;@@@@;@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;@@;;;;;```//;//////////``/;;//;;;;;;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/;;;;;///;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@@;;;;;;;;;;;;@@;/``````/;;;@@@;;;;;;;;;;@@@@@@@@@@@@@;;;;;;/````/;;;;;;;;@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;;@@@;@;/`;@@@;@@@@@@@@@@@@@@@@;;;@;@@@;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;;;;/````/;//////////```/;//;;;;;;/;;@@@;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;;;;;;;@@;;@@/````````;;@@@@;;;;;;;;;;@@@@@@@@@@@@@;;;@@;/``//;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;;@;;@@;`/;@;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;;;;;;//```//;//////////``/;;/;;;;//;@@@;/``//;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;//;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@@;;;;;@@@;;//;/`````/``/;@@@@;;;;;;;;;;@@@@@@@@@@@@@@;@@@;///;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;@@;;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;@;@;@/`/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/````/;//////////```/;//;;/;;@@@;`````/;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;;;;;@;/`````````/;;/``;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@;;;@@;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;@@@@;;@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;@;;@;/`;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/```//;//////////``/;;///;@@@@;/````/;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;@;/`````````/;@@;/`/@;;@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;@@@;@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;@;;@;`/;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;/````//;/////////```///;@@@@@@;/```/@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@@;;@;/`````````/;@;;@;//;@;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@;@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;@;@@/`/;@;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@@@;;;;;@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;/```//;//////////`//;;@@@@@@@;///;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/;/;;;;;;;/;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;@;/`````````/;;;;@@/`;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;@;;@@;@@@@;;;;@@@@@@@@;;;;;;;;@@@@@@@@@@@@;@@;;@;/`;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;/````/;////////////;@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;/;;///;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;@;`````//;/``;@;;@@/`/;;;@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;@@;@@@@@@@;;;;@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@;;@;`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@;;@@@;;;;;;;;;;;;;;;;;;;;;;/```//;/////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;///;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@@;@;````/;@@;/`/@@@@;/``;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;/;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;@;;@@@@@@;;;;@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@;;@@/`/@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@;@@@;;;;;;;;;;;;;;;;;;;;;;@;/````//////////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/;;;;;;//;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;@;/``/;@;;@/``;@@;/```;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;////;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;@@;;@@@@;;;;@@@@@@@@;;;;;;;;;;;;;;;;@@@@;;;@@;/`;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@;@@;@@@@@@@;;;;;;;;;;;;;;;;;;;;;@;;;;;/````///////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;//;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;@;;@/``/;;;;@;/``///````;;;;@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@;//;;//;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;@;@@@@@;;;;;;;;;;;;;;;;@@@@;;;;;;;;;@@@@;;@@;`/;@;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@;;@@@@;@@;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;//```//////;@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;;/;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;;@;/``;@;;@@/`````````;@;;@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@;;/;;;;;/;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;@@;;;@;;;@@@@@@@;;;;;;;;;@@@@@;@;/`/@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@;;@@;;@@;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;/````///;@@@@@;`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;///;;/;;;//;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;;/``/;;;@@/````````/;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@;;;;@@;;;;/;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;;;@;;;;@@@@;;;;;;;;;@@@@@;@;/`;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@;@;;;@;;;;;;;;;;;;;;;;;;;;;@@@;@@;;;;;;;//``//;;@@@@;````/;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//;;;/;/;/;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@;@@;```;@@;;````````/;@;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@;;;@@;;;;;//;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@;@;@@@@;@@@@@;;;;;;;;;@@@@@;@;`/;@;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;@@@;;;;;;;;;;;;;;;;;;;;;@@;@@@;;;;;;;;;;////;@@@@;/`````/;;@@@@@;;@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;;///;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@;/``/;;/````/``/;;@;;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;/;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;@@;@@@@@@@@@;@;;;@;;;@;@;;;;;;@;;@@@;@;/`/;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@;@@;;;@@@@@@@@@@;@@@@;;;@@;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;;;;;;//;;@@@@/````````/;@@@;/`;@@@@@@@@@@@@@@;;;;;;;;;;;//;;;;;;;//;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;@/`````````/;;;;;;;;;;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;/;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@;@@;@@;/;;@@;@;;;;;;;;;@;;@;@;@;/`;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@;;;@;;@@@@@@@@@@@@@@;;;@@@;;;;;;;;;;;;;;;;;;;;;@@;@@;;;;;;;;;;;;;//;@@@@;```````````/;;/```/@@@@@@@@@@@@@;;;;;;;;;;;//;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;@;`````````;@@@@;;;;;;;;;;@@@@;/;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;//;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@;////;@@;@@;;@@;;;;;;@;;@@;`/;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@;@@;;;;;;;;;;;;;;;;;;;;;;@@@;@@;;;;;;;;;;;;//;@@@@;/```//```````//````/;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;@;/```````/;@;;;;;;;;;;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;/;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@;@@;;;;//;@@@@@@@;@@;;@;@;;@;/`;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@;;;;@@@;@@@@@@@@@@@@@@;@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;/;;@@@@;```/@@;/```````````/@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;//;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;@@;@;/`````/;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;/;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@;@@@;;@@;@;/;@;@@@;;;;@;;@@;;;@;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@;;;;@@@;@@@@;;@@@@@;;@@;;@@@@@@@;;@;@@;@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;///;;;;;//;@@@@@/``/;@@@;//`````````;@@@@@@@@@@@;;;;;;;;;;;;/;;;;;;;//;@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;@;//`/;@@;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;//;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@;;@;;;;/;//;;/;;@@;;;@;@;;;;@@;`/;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@;;;@;;@@@@@@@@@;;;@@@;;;@@@@@@@@@@@;@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@;@@;;;;;;/;//;;;//;@@@@@@/```;@@@@@;/````````/@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;/;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;@@;;@@;;;@;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@;;;;;;//;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;@;;@//;;///;@////;@;@;;@@;;;;@;/`;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;;@@@@@@@@;;;;@;;//;@@@@@@@@@@;;@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;//@;///;/;;@@@@@@/```;@@@@@@@/````````;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;//;@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;;@@@;;;;;@;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;/;;/;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@//;@;/;@;/;;//;@@@;@@;@@@@;`/;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;@@@@@@@;@;;@;;;//;;@;@@@@@@@@;@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;//;;;;;//;;@@@@@@@;```/@@@@@@@@/````````/@@@@@@@;;;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;@;@@;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@;;;//;;;/;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@;//;//;@///;;/;@@@;;@@;;@@/`/@@;@@@@@@@@@@@@@@@@@@@@@@@;@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;@;@@@;//;;;;;@;@@;;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@;@@;;;;;;//;;;;;;//;@@@@@@@@;/``/;@@@@@@;``````````;@@@@@@;;;;;;;;;;;;;;;;;;;;//;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;@@@@@@@@@@@@@@@@@@@;/;;;;;;/;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@;;//;;;;;//;@@;@;@;;;@;@;/`;@@;@@@@@@@@@@@@@@@@@@@@@@@;@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;@@;;;@//;;///;@;@@;;;@@;;;;;;;;;;;;;;;;;;;;;;;;@@@;@@;;;;;;//;;;;;;//;@@@@@@@@@@/```;@@@@@;/`````````/;@@@@@;;;;;;;;;;;;;;;;;;;/;/;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;//;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;//;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@;;@;/;@@//;@@;;@;;;@;@;`/;@@;;@@@@@@@@@@@@@@@@@@@@@@;@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;;//;@;///;;/;@;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;//;;;;;;;/;;@@@@@@@@@@/```;@@@@@/``````````;@@@@@@;;;;;;;;;/;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@;;;@@;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@;;;@;;;;;;;/;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;/;@@//;@;;@;;;@;;@/`/@@;@;@@@@@@@@@@@@@@;@@@;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;@@;//;//;@//;@@//;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;@@;;;;;;//;;;;;;;/;;@@@@@@@@@@@;```/@@@@;````////``;@@@@@@@;;;;;;;;;;;;;;;;;;;//;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@@;@;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;@@@@@@@@@@@@@@@@;@@;;;;;;;;/;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@;//;;/;@@@@;;;;;;@;/`;@;;@@@@@@@@@@@@@@@@@@@@@;@@@;;@@@;@;;;@@@@@@@@@@@;;;;@@@@@@@@@@@@;;;;;;@;/;@@//;;;;@;//;@;@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;@@;;;;;;/;;;;;;;//;@@@@@@@@@@@@;/``/;@@;/```/;@@;/;@@@@@@@;;;;;;;;;/;;;;;;;;////;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;//;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;/;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;/;;;;;;;@;///;;@;@;;;;;;;@;`/;@;;@@@@@@@@@@@@@@@@@@@@;;@@@;;;@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@;/;@;//;@;/;//;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;/;;;;;;;//;@@@@@@@@@@@@@@/```/;;/````;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;//;;@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;;/;;;;;;@@@@@@@;;;;;;;;;;;;;;;;/`/;;;;;;;@;;;;@;;;;;;;;;@@/`/;@;@@@@@@@@@@@@@@@@@@@@@;;@@@@;;;@@;@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//;@@;///;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@;;;;;;/;;;;;;;//;;@@@@@@@@@@@@@@;````//````/@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;//;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;;/;;;;;;;@@@@@@;;;;;;;;;;;;;;/`//;;;;;;;;@@@@;;;@@;;;;;@;/`;@;@@@@@@@@@@@@@@@@@@@@@;;;;;;@;;;@@;@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;//;@;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;@@@;;;;;;//;;;;;;//;;@@@@@@@@@@@@@@@;/````````/;@@@@@@@@@@@;;;;;;;;;;;;;;/;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;/;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;//;;;;;;;@@@@@@;;;;;;;;;;;;;``/;//;;;;;;;;@;;@@@@@;;;@@;`/;@;@@@@@@@@@@@@@@@@@@;@@@;@@@@@@;@@@;@;;;@@@@@@;;;;;;;;@@@@@@@@@@@@@@;@@;;@@//;;;/;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;@@@;;;;;;;////;;;;//;;@@@@@@@@@@@@@@@@@;/```````;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;////;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;//;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;///;;;;;;;@@@@@@@;;;;;;;;;;/``/;////;;;;;;;@@@@@@@;;;@@/`/@@;@@@@@@@@@@@@@@@@@@@@@;@@;;;;@;;;@@;@;;@@@@@@;;;;;;;;@@@@@@@@@@@@@@;@@@;@@/////;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;@@@;;;;;;;//;;//;;;//;@@@@@@@@@@@@@@@@@@@;/`````/@@@@@@@@@@@@@;;;;;;;;;;;;;;;;/;;///;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;//;;;;;;;@@@@@@@@@@@@@@@@@@;;;;;;//;//;;;;;;;@@@@@@@;;;;;;;;/``/;//////;;;;;;;;@@@@@;;;@;/`;@@;@@@@@@@@@@@@@@@@@@@;;@;;//;;;;;;;@@;;;@;@@@@;;;;;;;;@@@@@@@@@@@@@@;@@@@@@;//;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;@@;;;;;;;//;;;;//;//;@@@@@@@@@@@@@@@@@@@@@;/````;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;////;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;//;@;//;;;;;;;@@@@@@;;;;;;;;```/;///`/;;;;;;;;;;;;@@;;;@;`/;@@@@@@@@@@@@@@@@@@;@@@;;@;/`/;/;/`/;;;@@;;;@@@@;;;;;;;;@@@@@@@@@@@@@@;@@@@@@;;;@@@;;;;;;;///;;;;;;;;;;;;;;;;;;;@@@@@;@;;;;;;//;;;;;@;///;@@@@@@@@@@@@@@@@@@@@@@@@//`/@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;@@@@@@@@@@@@@@@@@@@@;//;;;;;//;;;;;;;@@@@@@@;;;;;/``/;////`/;;;;;;;;;;;;;;;@@@/`;@@@;@@@@@@@@@@@@@@@@@@;;@@;/`/;///`/;;;;;@@@@@@@;;;@@@@@;;;;;;;;;;@@@@@;;@@;;@@@;;;;;;;;;/`/;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;;//;;;;;;;;/;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;/;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;@@@@;;/;;;;;;;@@@@@@@@@@@@@@@@@@;;/;;;;;;;//;;;;;;;@@@;@@;;;@;``/;////`/;;;;;;;;;;;;;;;;;@;/`;@;;@@@@@@@@@@@@@@@@@@@;;@@;/`/;//``/;;@@;@@@@@@@;;;@@@@@;;;;;;;;;;@@@@@@;;@@;;;;;;;;;;;///`/;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;//;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;//;;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;@@@@;//;;;;;;;@@@@@@@@@@@@@@@@@;;;@;;;;;;;//;;;;;;;@@@@;;;;;/``/;///``/;;;;;;;;;;;;;;;;;@;`/;@;;;@@@@@@@@@@@@@@@@@@@;;@;/`/;///`/;;;;;@@@@@@@;;;@@@@@;;;;;;;;@@@@;;;;;;@@;;;;;;;;;/////``;@;;;;;;;;;;;;;;@@@@@@@;;;;;;;//;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;/;;;;;;;///;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;@;;;@;@@@;;//;;;;;;;@@@@@@@@@@@@@@@@;;@;;;;;;;;;;/;;;;;;;@@@;;;;/``/;////`/;;;;;;;;;;;;;;;;;;;/`;@@@@@@@@@@@@@@@@@@@;@@@@@;@;``/;//``/;;;;;@@@@@@@;;;@@@@@@@@@@@@@@@@@;@@@@@;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;@@@@@@@;;;;;;;//;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;//;;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@;;//;;@@@@;;//;;;;;;;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;;@;;;@;/``/;///``;;;;;;;;;;;;;;;;;;;;//;;;;@@@@@@@@@@@@@@@@@@@@@@;@;``/;//``/;;@;;@;;@@@@@@@@;;;;;@@@;@@@@;;@@@@@;;;;;;;;;;;;/`/;///``;;;;;;;;;;;;@@@@@@@@;;;;;;;//;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;/;;;;;;;//;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;@;/```/;@;;@@;;/;;;;;;;;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;;;;;;/``/;////`/;;;;;;;;;;;;;;;;;;@;`/;;;;;;@@@@@@@@@@@@@@@@@@;;;@;``/;//`//;;@;;@;;@@@@@@@@@@@@@@;;;@@@@@@@;;;;;;;;;;;;;;;;/``;;///`/;;;;;;;;;;@@@@@@@@;;;;;;;///;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;;;///;;@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@;@;;;;;;;;;;;;;;;;;;@@/````/;;;;@@@;;//;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;;;;;/``/;////`/;;;;;;;;;;;;;;;;;;;;/`;;;;;;;@@@@@@@@@@@@@@@@;;;;;@;``////`/;;;;;;;;;@@@@@@@@;;;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;``/;///``;;;;;;;;;;@@;@@@@;;;;;;;//;/;;;;;;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;////;;;;;;///;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;@@/```/;@;;;;@@@;;//;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;/;;;;;;;;;;/``/;///``/;;;;;;;;;;;;;;;;;;;;//;;;;;;;@@;;;;@@@@@@@@@@@;;;;@;``;///`/;;;;;;;;;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;/``;;///`/;;;;;;@@@;@@@@;;;;;;;//;;;//;;;;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/;/;;;;;////;@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@;;;;@;;;@;;;;;;;;;;@;/``;@;;;;;;;@@;;//;;;;;;@@@@@@@@@@@@@@@@@@;;;;;;;;/;;;;;;;;;;/``/;////`/;;;;;;;;;;;;;;;;;;;;;`/;;;;;;@@@;;;;;;;;;;;;@@@@;;;@/`/;///`/;;;;;;;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;``/;///``;;;;;;@@@@@@;;;;;;;;//;;;;;//;;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;//;;;;;;//;;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@;;;;@;;;;;;;;;;;;;;;@;/;;;;;;;;;;@@@;;/;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;//;;;;;;;;;;/`/;;///``;;;;;;;;;;;;;;;;;;;;;/`;;;;;;;@@@;;;;;;;;;;;;;;;;;;;@/`/;///`/;;;@;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``;;///`/;;;;;;;@@@;;;;;;;;//;;;;;;;////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;;@@;;//;;;;;;@@@@@@@@@@@@@@@@@@;;;;;/;;;;;;;;;;/``/;///``/;;;;;;;;;;;;;;;;;;;;;//;;;;;;;@@;;;;;;;;;;;;;;;;;;;;@/`/;///`/;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;``/;///``;;;;;;;@@;;;;;;;///;;;;;;;;;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;//;;;;;;;@@@@@@@@@@@@@@@@@@;;/;;;;;;;;;@;``/;////`/;;;;;;@;;;;;;;;;;;;;;/`/;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``;;///`/;;;;;;;;;;;;;;//;;;;;;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/;;;;;;;///;;@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;//;;;;;;@@@@@@@@@@@@@@@@@@;/;;;;;;;;;;;/``/;///``/;;;;;@@@@;;;;;;;;;;;;/`;;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``/;///``;;;;;;;;;;;;;//;;;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;;;@@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;/;;;;;;;;@@@@@@@@@@@@@@@@;;;@;;;;;;;@/``/;////`/;;;;;@@;@@@;;;;;;;;;;;//;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``;;///`/;;;;;;;;;;//;;;;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;//;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;/`/;;///`/;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``/;///``;;;;;;;;;;//;;;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;//;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;/``/;///``/;;;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``;;///`/;;;;;;;;;;//;;;;;;;;//;;@@@@;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/;;;;;;////;@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;/;;;;;;;;;@@;;@;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;@@;;;//;;;;;;;@@@@@@@@@@@@@@@@@;;;;;@;/`/;//;/`/;;;;;;;;;;@@@;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``/;///``;;;;;;;;;;;/;;;;;;///;;@@@@;/``/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;/;;;;;;;;;;@@;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;//;;;;;;;@@@@@@@@@@@@@@@@@@;;;@;``/;/;/`/;;;;;;;;;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;/``;////`/;;;;;;;;;;//;;;;///;@@@@@@/````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;;@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;//;;;;;;;@@@@@@@@@@@@@@@@@@;;@/`/;////`/;;;;;;;;;;;;;;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;@@;;;;/``/;///``;;;;;;;;;;;//;;//;;@@@@@@@;/````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;//;;@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;///;;;;;;;@@@@@@@@@@@@@@@@@@@//;;/;/`/;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;``/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;@@;;;;;/``;;///`/;;;;;;;;;@;////;;@@@@@@@@@;/```;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;///;@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;;;/;;;;;;;;@@@@@@@@@@@@@@@@@@;/;//;/`;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;``/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;@@@@;;;;;;;/``/;///`/;;;;;;;;;;;///;;@@@@@@@@@@@;/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;///;@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;//;;;;;;;@@@@@@@@@@@@@@@@@;;//;/`/;;;;;;;;;;;/;;;;;;;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;``/;//``/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;@@@@@@;;;;;;;;/``;////`/;;;;;;;;;///;;@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;;@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;//;;;;;;;@@@@@@@@@@@@@@@@@;/;;//;;;;;;;;;;;///;;;;;;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;``/;//``/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;@@@@;;;;;;;;;;;;/``/;///`/;;;;;;;;//;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;///;;@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;@@@@@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;///;;;;;;;@@@@@@@@@@@@@@@;;;;//;;;;;;;;;;;/;;///;;;;;;;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;``;;//`//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;/`/;////`/;;;;;///;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;///;@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;/;;;;;;;;;;;@@;;@;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;@;;///;;;;;;;@@@@@@@@@@@@@@@@;@;;;;;;;;;;@;/;;;;;///;;;;;;;;;;;;;@@@@@@@;@@@@@@@@@;;;;;;;;;;;;``;///`//;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;/``/;///`/;@;;///;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;///;@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;@@@;@;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;@;;;;;;///;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;//;;;;;;;///;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;/``;///`/;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@;@@@@@@;;;;;;;;;;;;;;;;;;;;;;/`/;///``;;///;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;//;@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;@@;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;@;@;;;///;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;/;;;;;;;;;;///;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@;;;;/``;///`/;;;;;;;;@@@@@@@@@@@@;;@@@@;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;/``/;////////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;///;;@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;@@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;///;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;/;;;;;;;;;;;;;///;;;;;;;;;;;;;;;;;@@@@@@@@@@;;@@;;;;/`/;///`/;;;;;@@@@@@@@@@@@@;@@@@@@@@@@@@@;;;;;;;;;;;;;;;////;;;;;;;;;;/`/;//////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;///;;@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;@@;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;//;@;;;;@;;;///;;;;;;;@@@;@@@@@@@@@@@@;;;;;;/;;;;;;;;;;;;;;/////;;;;;;;;;;;;;;;;;;@@@@@@@@@@;;;;/`/;///`/;;;;;@@@@@;@@@@@@@;;@@@@@@@;;;;;;;;;;;;;;;;;////;;/;;;;;;;;;;/``;;////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;////;@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@;@;/``/;@@;@;@@;;///;;;;;;;@@@@;;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;/;;;;///;;;;;;;;;;;;;;;;;;;;;@@@@;;;;/`/;///`/;;;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;/////;;;;//;;;;;;;;;;/`/////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;//;;@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@;`````/;@;;;@@;;;///;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;/;;;;;;////;;;;;;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;/////;;;;;;;;/;;;;;;;;;;/////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;//;;;@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;@@;;;;;;;@;;;;;;;;;;;;;;;;;;;@;/`````/;@@@;;@@;;////;;/;;;;;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/;;;;;;;;;;////;;;;;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////;;;;;;;;;;;/;;;;;;;;;;;//;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/;;;;;;;;//;@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;/;;;;;;;;;;;;;@@@;@;;@@@@;;;;;;;;;;;;;;;;;;;;;/`````/;@@@;;@@;;;///;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/;;;;;;;;;;;;;/////;;;;;;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///////;;;;;;;;;;;;;//;;;;;;;///;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;/;;@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;@;;@@;;;;@;;;;;;;;;;;;@@;;;;;@@;/`````/;@@;;;@;;;;///;;//;;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////;;;;;;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;;;;;;;//////;;;;/;;;;;;;;;;;;;;/;;;;;;///;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;/;;;;@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;;;;;;;;;;;;;;;;;@@;;;;;;@@;;;;;;;;;;;@;;;;;;;@@;/`````/;;@;;;;@;;;////;;//;;;;@@@@@@@@@@@@@@@;;;;;;;;;/;;;;;;;;;;;;;;/;;;;;;;;//////;;;;;;;;;/`/;///`/;;;;;;;;;;;;;;;;;;;;;///////;;;;;;;;;/;;;;;;;;;;;;;;/;;;;///;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;///;;@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;@@@;;@@@@;;;;;;;;;;;;;;;;;;;;;;@@;/````/;;@;@@@;@;;;///;////;;;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;/;;;;;;;;;;;;//;;;;;;;;;/`/;///`/;;;;;;;;;;;;////////////;;;;;;;;;;;;;/;;;;;;;;;;;;;;;;////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;///;;@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@;;;;/;;;;;;;;;;;;@@;;@@;;;;;;;;;;;;;;;;;;;;;;;;@@;/`````/;;;;;;;@@;;;////////;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;/;;;;;;;;;;;@;/;;;;;;;;;/`/;///`/;;;;;;;;;///////;;;;;;;/;;;;;;;;;;;;;/;;;;;;;;;;;;;;;////;;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;//;;@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@;;;;;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@;/``````;@;;;;@;@@@;;;////////;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;/;;;;;;;;;;;;;;/;;;;;;;;;``/;///`/;;;;;;;;;/;;;;;;;;;;;;;/;;;;;;;;;;;;;//;;;;;;;;;;;/////;;;;@@@@@;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;//;;;@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;;;;;;;;;;;;;;;;;;@@@;;@@;;;;;;;;;;;;;;;;;;;@@;//```````;;;;;@@;;@@@;;;;///;;//;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;/;;;;;;;;;;;;;;/;;;;;;;;;``/;///`/;;;;;;;@;/;;;;;;;;;;;;;/;;;;;;;;;;;;;;/;;;;;;;;;;////;;;@@@@@@;/```/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;//;;@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@;;;;;;;;;;;;;;;;;;@@;;@@;;;;;;;;;;;;;;;;;@@;;/````````/;@;;;;;;;@;@@@;;;;////;;//;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;/;;;;;;;;;;;;;;/;;;;;;;;;``/;//``/;;;;;;;;;/;;;;;;;;;;;;;/;;;;;;;;;;;;;;/;;;;;;;////;;;;@@@@@@;/``````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;/;;;@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@;;;;;;;;;;;;;;;;;;@@;;;;@@;;;;;;;@;;;;;@@;/`````````/;;;;;@;;;;;;;@@@@;;;;////;////;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;/;;;;;;;;;;``;;//``/;;;;;;;;;/;;;;;;;;;;;;;/;;;;;;;;;;;;;;;;;;;;/////;;;@@@@@@;//``````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;//;;@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@;;;;;;;;;;;;;;;;;;@@;;;@@;;;@;;@;;;;@@;;`````````/;;@;;;;;;;;;;;;;;@@@@;;;;/////;;;;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;/;;;;;;;;;;``;;//``/;;;;;;;;;/;;;;;;;;;;;;;//;;;;;;;;;;;;;;;;/////;;;@@@@@@@;;/``````//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@;@;;;;;;;;;;;;;;;;;;@@;;@@;;;@;;;@;;;@;/````````/;;@@;;;;;@;;;;;;;;;;;;;@;;;;;//////;;/;;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;/;;;;;;;;;;``;///`/;;;;;;;;;;/;;;;;;;;;;;;;//;;;;;;;;;;;;;;////;;;;@@@@@@@;;/``````//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;/;;@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@;@;;@;;@@;/````````/;@@;;;;@@@@;;;;;;;;;;;;;;@@@@;;;//////;;;;;;;;;;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;``;///``;;;;;;;;;;/;;;;;;;;;;;;;;;;;;;;;;;;;;/////;;;;@@@@@@@@;/``````//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@;@@;;;;;;;;;;;;;;;;;;@@;@@;@;@@;;@;/````````/;;@;;;;@@@;;;;;;;;@@@@;;;;;@@;;@@;;;;//////;;/;;;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;/`////``/;;;;;;;;;/;;;;;;;;;;;;;;;;;;;;;;;/////;;;;;@@@@@@@@;/```````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@;@@@;;;;;;;;;;;;;;;;;;@@@@@@;;;@@;/````````/;@;;;;;;;@;;;;;;;;;@@@@;;;;@@@;;@;@@;;;;;/////;////;;;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//////;;;;@@@@@@@@@@@;```````;@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@;@;;@@;;;;;;;;;;;;;;;;;;;@@@@;;;@@/```````/;;@;;;@;;@@@;;;;;;;;;@@@@@;;@@@;;;@@;@@@;;;;;;////////;;;;;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///////;;;;@@@@@@@@@@@@@@;``````/;@@@@@;;//`//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@;@@;;;;;;;;;;;;;;;;;;;@@;;;@@;/``````/;@@;;;;;;@@@;;;;;@;;;;@@@@@@@@@@@@;@;;@@;@@@@;;;;;/////////;;;;;;;;;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;////////;;;;;@@@;@@@@@@@@@@@@;/`````/;@@@@;/``````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@;@@@@;;;;;;;;;;;;;;;;;;;@@;;;;@;/````/;@@;;@@;;;;;;;;;;;;@@@@@;;;;;;;;;;@;;;;@;@@@@;@;;;;;;;//////////;//;;;;;;;;@@@@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;////////;;;;;;@@@@@@@@@@@@@@@@@@@@;/`````/;;;/`````````;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@;@;@@@;;;;;;;;;;;;;;;;;;;@@@;;;@;;//;;@;;;;@@@@@;;;;;;;;@@@@@;;;;;;;;;@@@@@@@;@@@@@;;@@@@;;;;;;;//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////////;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@/``````//```````````/;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@;@@;;;;;;;;;;;;;;;;;;;;@@;;;@@;;@@@;;@;;;;;@;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;@;;;;@;;@;;;@@@;;;;;;;////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/////////////;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/``````````///``````;@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@;;@@@@;;;@@;;@;;;;;;;@;;;;;;;;;;;;;;@@@@@;;@@@@;/``/;@;@;@@@;;@;;;;;;;;;;;;///////////////////////;;;;///////////////////////;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;````````//;@;/`````/;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@;@@@;;;;;;;;;;;;;;;;;;;;@@@;@@@;@;;@;;;;;;;;;;;@@@@@@@;;;;;;@;;@@@@;@@;@@;```/;@@;@@@@@@@@;@@@;;;;;;;;;;;;///////////////////////////////////////;;;;;;;;;@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/`````//;@@@@;``````;@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@;;@@;;@@;;;;;;;;;;;;;;;;;;;;;@@;@@@@@;@;;;;;;;;;;@@@@@@@;;;;;;@;;;;;;@@@@;@;/```/;@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;///////////////////;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/```/;@@@@@@@/`````/;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@;@@@@@@@;;;;;;;;;;;;;;;;;;;;;@@@;;@@@@@@;;;@@;;@@@;;;;;;;;;@@@;;;;;@@@@@@@;/```;@@;@;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@///;@@@@@@@@@/`````/;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@;;;@@@@@;;@@@@@@@;;;;;;;@@@@@@;;;@@@@;@@@@/``/;@;@@;@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@;;/`````/;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@;@@@@@@@@;;@@;;;;;;/;;;;;;;;;;;;;;;@@;;@@@@@@@@@;;;;@;;;;;@@@@@@@@@@@@@@@@@@@@;//;;@;@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;```/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/```````/;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@;;;;;/;;;;;;;;;;;;;;;@@@@@@@@@@@;;;;;@;;;;@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;```/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/````````/;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@@;;;@;;;@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//````````/;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@;;@@;@@@;;;@@@@@@@@@;@@@@@@@@@@@@@@@;@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/```````//////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/```;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//````````/;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@;@@;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/```````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/`/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/````````/;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;`````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;```````/;@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;```````///``````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/````/;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````/;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/`/;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@;@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@;@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;``````//;;;;;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````````````//;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;```````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;``````//////````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````/;@;@;/`````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````/@@;@@;`````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;`````/;@;@@/`````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;`````/;@@@@;`````;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````/;@@@@;`````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````/;;;@;/`````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/``````////`````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;```````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//////////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;``/;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;````/;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/`````//;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`````````/;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;```````````/;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/````````````/;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/``````````````//;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/`````````````````/;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;````````````````````//;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/``````````````````````/;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/````````````````````````//;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/```````````````````````````//;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/```/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/``///////////////////////`````//;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//`````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//;;;;@@@@@@@@@@@@@@;;;;;;;;;;////;;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/```````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//`````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//```````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//```````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//////``````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;////////``````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/////`````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@;@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;@;@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@;;@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;;;@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;;;;;@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;//````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@;@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@;@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@;;@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;@;;@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@;@;;@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@@@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;@@@;;@@@@@@@@@@@@@@@@@@@@@@@;@@@@@;;;;;;@;@;;@@@;;;;;;@;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@;;;;@;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@@;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;@@;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@;;;@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@;@@;;;;;;;;;;;;;;;;@@@@@@@@@@@;;;;@@@@@@@;;;;;@;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@;;;;;;;;;;;;;;@@@@;;;;;;;@;;;;@@@@@@@;;;@@@;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@;;@@@@;;;;@;;;;;;;@;;;;;;;`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;@@;;;;@@;;;;@;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;;;```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@;;;@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@@;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;@;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;;;;;;;``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;@;@@;@@;;@@@@@@;@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;@@;@;;@;;@@@@@;@@;@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;@@;;@;;;@;@@@@@@;@@@@;;@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;@;;@@;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;@@;;;@;;;;;;@;;;;;;;;;@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;@;;;;;@;@@;;;;;;;;;;;@@@@@@@@@@;;;@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@;;;;;;;@@;;;;@@;;;;;;;;;;;;;;;;;;;;``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;@;;;;@@;;;;;;;;;;;;;@@@@@@@@@;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;@;;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;@@@@;;;;;;@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;;;;;@;;@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;@;;@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;;;;@@@@@@@;@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;;;;;;;;;;;;;;///``/;@;;;;;;;;;;;;;;@@;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;;;;;;;@@@@;;;;;@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////////////////````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;@;;@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@;;;;;;;;;;;;;;;;;;;;;;;;;;/````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@;;;///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@;@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@;;//````///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@;@;;;/`````````///;;;;;;;;;;;;;;;;;;;;;;;;;;;;//```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@;@;@;;;/```````````````///;;;;;;;;;;;;;;;;;;;;;;//`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;@@@@;;;@@;;;;;/`````````````````````///;;;;;;;;;;;;;;///````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@;@@@;;;;;;//````````````````````````````//////////`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;//``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````//////////////////////``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.