 	}
 
 	// Search back to find exact bound with binary search.
-	// 2TŌɏ߂.
+	// 2分探索で厳密に上限を決める.
 	int l = 0;
 	int t = lmax;
 	do

	} while (right > left + 1);

	return left;
#else
	// Find the split position using binary search
	// ʒu2TŌ߂.

	// T͈͂̉Ə̊ԂLongestCommonPrefixvZ.
	const auto nodeLcp = computeLongestCommonPrefix(sortedKeys, numOfElems, left, right);

	int start = 0;
	int divisor = 2;
	int t = left;

	while (t > 1)
	{
		t = (left + divisor - 1) / divisor;

		auto lcp = computeLongestCommonPrefix(sortedKeys, numOfElems, left, left + (start + t) * d);
		if (lcp > nodeLcp)
		{
			// 蒷LogestCommonPrefix̂ŁAʒuɈړ.
			start += t;
		}
		divisor *= 2;
	}

	auto split = left + start * d + min(d, 0);

	return split;
#endif
}

__global__ void buildTree(

	auto lcp1 = computeLongestCommonPrefix(mortonCodes, numPrims, idx, idx + 1);
	auto lcp2 = computeLongestCommonPrefix(mortonCodes, numPrims, idx, idx - 1);

	// どちら向きに探索していくかを決める.
	// CommonPrefix が長くなる方向に探索する.
	int d = (lcp1 - lcp2) < 0 ? -1 : 1;

	// 探索範囲の上限を決める. 倍々に広げていき、下限基準より LongestCommonPrefix が長くなる位置を探索範囲の上限とする.

	// Find minimum number of bits for the break on the other side.
	// Common Prefix が長くなる方向とは１つ反対の LogestCommonPrefix を計算する.
	// 長くなる方向とは１つ反対 = LogestCommonPrefix の下限基準.
	int minLcp = computeLongestCommonPrefix(mortonCodes, numPrims, idx, idx - d);

	// Search conservative far end
