#include <iostream>
using namespace std;
class First
{
public:
virtual void Report() { cout << "First" << endl; }
void CallReport() { Report(); }
};
class Second : public First
{
public:
virtual void Report() { cout << "Second" << endl; }
Second() { CallReport(); }
};
class Third : public Second
{
public:
virtual void Report() { cout << "Third" << endl; }
};
int main()
{
Third third;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRmlyc3QKewpwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgUmVwb3J0KCkgeyBjb3V0IDw8ICJGaXJzdCIgPDwgZW5kbDsgfQogICAgdm9pZCBDYWxsUmVwb3J0KCkgeyBSZXBvcnQoKTsgfQp9OwoKY2xhc3MgU2Vjb25kIDogcHVibGljIEZpcnN0CnsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIFJlcG9ydCgpIHsgY291dCA8PCAiU2Vjb25kIiA8PCBlbmRsOyB9CiAgICBTZWNvbmQoKSB7IENhbGxSZXBvcnQoKTsgfQp9OwoKY2xhc3MgVGhpcmQgOiBwdWJsaWMgU2Vjb25kCnsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIFJlcG9ydCgpIHsgY291dCA8PCAiVGhpcmQiIDw8IGVuZGw7IH0KfTsKCmludCBtYWluKCkKewoJVGhpcmQgdGhpcmQ7CiAgICByZXR1cm4gMDsKfQ==