std::vector<std::pair<int, int>> merge_private_blocks(std::vector<std::pair<int, int>> src, std::vector<std::pair<int, int>> dst) {
std::vector<std::pair<int, int>> result;
unsigned i_src=0, i_dst=0;
while(i_src < src.size() && i_dst < dst.size()) {
std::pair<int, int> block;
std::vector<std::pair<int, int>> merge_private_blocks(std::vector<std::pair<int, int>> src, std::vector<std::pair<int, int>> dst) {
std::vector<std::pair<int, int>> result;
unsigned i_src=0, i_dst=0;
while(i_src < src.size() && i_dst < dst.size()) {
std::pair<int, int> block;