refactored euler019