#include <iostream>
#include <cmath>

std::pair<int,int> segment_of(int index, int size) {
	int depth = log2(size - index);
	int segment_size = 1 + size / (2 << depth);
	int position = (2 << depth) - size + index - 1;
	
	return {position * segment_size, (position + 1) * segment_size - 1};
}

int main() {
	auto segment = segment_of(9, 15);
	
	std::cout << '[' << segment.first << ',' << segment.second << ']';
	
	return 0;
}