http://www.democrator.ru/problem/6199/docs#doc/10550