кидает в бесконечный цикл, хотя логика вроде правильная