#include <iostream>
template <class T>
void f(T)
{
std::cout<<"base ";
}
template <>
void f<int>(int)
{
std::cout<<"int ";
}
template <>
void f<long>(long)
{
std::cout<<"long ";
}
int main()
{
short int i = 1;
long l = 2;
f(i);
f(l);
f(i * i);
f(l * l);
}