Или, если подойдёт достаточно хорошее решение - всякие эвристики с жадностями.нет никакого "или" - есть только перебор с разной степерью эффективности. в некоторых случаях перебирать все варианты не обязательно, достаточно предварительной сортировки, например, у тебя кубики 2х1 и 3х1.
это вообще в любом случае перебор
Если прервать работу сервера
callback({
id: "номер страницы",
files: [{id: "хэш пути 1", path: "путь 1"}, {id: "хэш пути 2", path: "путь 2"}]
});