#include <iostream>
using namespace std;
class A // Abstract
{
public:
virtual string Identify() = 0;
};
class B : public A
{
public:
string Identify() {return "B"; }
};
class C : public B {
public:
virtual string D_Work() = 0;
};
class D : public C
{
public:
string D_Work() {return "D_Work"; }
};
int main() {
C *d = new D;
std::cout << d->D_Work();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSAvLyBBYnN0cmFjdAp7CnB1YmxpYzoKICB2aXJ0dWFsIHN0cmluZyBJZGVudGlmeSgpID0gMDsKfTsKCmNsYXNzIEIgOiBwdWJsaWMgQQp7CnB1YmxpYzoKICBzdHJpbmcgSWRlbnRpZnkoKSB7cmV0dXJuICJCIjsgfQp9OwoKY2xhc3MgQyA6IHB1YmxpYyBCIHsKcHVibGljOgoJdmlydHVhbCBzdHJpbmcgRF9Xb3JrKCkgPSAwOwkKfTsKCmNsYXNzIEQgOiBwdWJsaWMgQwp7CnB1YmxpYzoKICBzdHJpbmcgRF9Xb3JrKCkge3JldHVybiAiRF9Xb3JrIjsgfQp9OwoKaW50IG1haW4oKSB7CglDICpkID0gbmV3IEQ7CglzdGQ6OmNvdXQgPDwgZC0+RF9Xb3JrKCk7CgkKCXJldHVybiAwOwp9