#include <iostream>
using namespace std;

template<typename T>
T half(T arg);

template<>
int half<int>(int arg)
{
	return arg/2;
}

template<>
double half<double>(double arg)
{
	return arg/2;
}

template<>
string half<string>(string arg)
{
	return arg.substr(0, arg.length()/2);
}

int main()
{
	cout << half(2) << endl;
	cout << half(0.5) << endl;
	cout << half(string("trivial")) << endl;
	return 0;
}