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