Полностью переработал логику программы