#include <iostream>
using namespace std;
struct A{
void foo() { cout <<"A::foo" <<endl; }
};
struct B : A{
void foo() { cout <<"B::foo" <<endl; }
};
struct C : A{
void foo() { cout <<"C::foo" <<endl; }
};
struct D : B, C {
void foo() { cout <<"D::foo" <<endl; }
};
int main() {
D d;
d.foo();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEF7Cgl2b2lkIGZvbygpIHsgY291dCA8PCJBOjpmb28iIDw8ZW5kbDsgfQp9OwoKc3RydWN0IEIgOiBBewoJdm9pZCBmb28oKSB7IGNvdXQgPDwiQjo6Zm9vIiA8PGVuZGw7IH0KfTsKCnN0cnVjdCBDIDogQXsKCXZvaWQgZm9vKCkgeyBjb3V0IDw8IkM6OmZvbyIgPDxlbmRsOyB9Cn07CgpzdHJ1Y3QgRCA6IEIsIEMgewoJdm9pZCBmb28oKSB7IGNvdXQgPDwiRDo6Zm9vIiA8PGVuZGw7IH0KfTsKCmludCBtYWluKCkgewoJRCBkOwoJZC5mb28oKTsKCXJldHVybiAwOwp9