Да все немного громоздко, но вроде правильно выводит. Что поправить нужно?