#include <iostream>
using namespace std;
template<class T = int>
class MyClass {
public:
void f() { cout << "D\n"; }
};
template<>
class MyClass<int> {
public:
void f() { cout << "S1\n"; }
};
template<>
class MyClass<double> {
public:
void f() { cout << "S2\n"; }
};
int main() {
MyClass<double> a; // 1
a.f(); //S2
MyClass<> b; // 2
b.f(); //S1
MyClass<int> c; // 3
c.f(); //S1
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Y2xhc3MgVCA9IGludD4KY2xhc3MgTXlDbGFzcyB7CnB1YmxpYzoKICAgIHZvaWQgZigpIHsgY291dCA8PCAiRFxuIjsgfQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBNeUNsYXNzPGludD4gewpwdWJsaWM6CiAgICB2b2lkIGYoKSB7IGNvdXQgPDwgIlMxXG4iOyB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIE15Q2xhc3M8ZG91YmxlPiB7CnB1YmxpYzoKICAgIHZvaWQgZigpIHsgY291dCA8PCAiUzJcbiI7IH0KfTsKCgppbnQgbWFpbigpIHsKICAgIE15Q2xhc3M8ZG91YmxlPiBhOyAvLyAxCiAgICBhLmYoKTsgICAgICAgICAgICAgICAgIC8vUzIKCiAgICBNeUNsYXNzPD4gYjsgLy8gMgogICAgYi5mKCk7ICAgICAgICAgICAgICAgICAvL1MxCgogICAgTXlDbGFzczxpbnQ+IGM7IC8vIDMKICAgIGMuZigpOyAgICAgICAgICAgICAgICAgLy9TMQoKICAgIHJldHVybiAwOwp9Cg==