#include <iostream>
#include <complex>
using namespace std;
template<typename T, decltype((T)0/(T)0)* v = nullptr>
T half(T arg)
{
return arg/(T)2;
}
string half(string arg)
{
return arg.substr(0, arg.length()/2);
}
int main()
{
cout << half(2) << endl;
cout << half(0.5) << endl;
cout << half(complex<float>(0, 1)) << endl;
cout << half(string("trivial")) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y29tcGxleD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIFQsIGRlY2x0eXBlKChUKTAvKFQpMCkqIHYgPSBudWxscHRyPgpUIGhhbGYoVCBhcmcpCnsKCXJldHVybiBhcmcvKFQpMjsKfQoKc3RyaW5nIGhhbGYoc3RyaW5nIGFyZykKewoJcmV0dXJuIGFyZy5zdWJzdHIoMCwgYXJnLmxlbmd0aCgpLzIpOwp9CgppbnQgbWFpbigpCnsKCWNvdXQgPDwgaGFsZigyKSA8PCBlbmRsOwoJY291dCA8PCBoYWxmKDAuNSkgPDwgZW5kbDsKCWNvdXQgPDwgaGFsZihjb21wbGV4PGZsb2F0PigwLCAxKSkgPDwgZW5kbDsKCWNvdXQgPDwgaGFsZihzdHJpbmcoInRyaXZpYWwiKSkgPDwgZW5kbDsKCXJldHVybiAwOwp9