Не за что)
А как там битсеты юзать?
Третья размерность это наша сумма - она либо есть, либо нет.
Создаём массив битсетов b[n][m] размера n+m.
Бит в битсете говорит нам, можно ли найти путь который заканчивается в данной точке или нет с такой суммой. Тогда при переходе мы можем скопировать битсет и сдвинуть его в нужную сторону. (Аккуратно обработав случаи с минимальной суммой, например создать битсет размера 2(n+m) и положить начало координат в центре)