№1 - правильно, но есть опечатки в пункте 3 №2 - поищите на форуме. Я недавно выложил решение точно такой же задачи. Ваше выглядит убедительно, но детально не анализировал.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.