早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早早~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~