#include <iostream>
using namespace std;
class X {};
class Y {};
template< typename T>
class C {
public:
virtual T * foo() = 0;
};
class A : public C< X> {
public:
X * foo() {};
};
class B : public A {};
class D : public B, public C< Y> {
public:
Y * foo() {};
};
int main() {
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgWCB7fTsKY2xhc3MgWSB7fTsKCnRlbXBsYXRlPCB0eXBlbmFtZSBUPgogIGNsYXNzIEMgewogIHB1YmxpYzoKICAgICAgdmlydHVhbCAgVCAqIGZvbygpID0gMDsKICB9OwoKY2xhc3MgQSA6IHB1YmxpYyBDPCBYPiB7CnB1YmxpYzoKICAgIFggKiBmb28oKSB7fTsKfTsKCmNsYXNzIEIgOiBwdWJsaWMgQSB7fTsKCmNsYXNzIEQgOiBwdWJsaWMgQiwgcHVibGljIEM8IFk+IHsKcHVibGljOgogICAgWSAqIGZvbygpIHt9Owp9OwoKaW50IG1haW4oKSB7CglyZXR1cm4gMDsKfQ==