Внезапно понял, что реализовал совсем не тот алгоритм, что было нужно. Завтра будем впаривать этот =)