#include <iostream>
#include <algorithm>

template<class T>
const T& Limit(const T& Min, const T& Max, const T& Value){
	const T& A = Min < Max ? Min : Max;//min
	const T& B = Min < Max ? Max : Min;//max

	const T& C = std::max(Value, A);
	return std::min(C, B);
}

int main(){

	int Max = 100;
	int Min = -100;
	int Mid = 0;

	std::cout << Limit(Max, Min, 101) << std::endl;
	std::cout << Limit(Max, Mid, 101) << std::endl;
	std::cout << Limit(Max, Min, 0) << std::endl;
	std::cout << Limit(Max, Mid, 50) << std::endl;
	std::cout << Limit(Max, Min, -101) << std::endl;
	std::cout << Limit(Max, Mid, -1) << std::endl;
	return 0;
}