вроде была подобная задача?
rovki её решал.