solved 665
shortened
solved 591