Кроме того, вот тут вы создаете лишний массив. Этого можно было избежать.