2 часа мучился, особенно с реализацией последнего пункта, даже пришлось лекции перечитать, вроде должно получиться. Интересно, возможен ли более простой способ?