Implement total weight limit split in backend

Return value should be `List[Long]`