#include <iostream>
struct A {
virtual ~A() { }
};
struct B : A {
};
struct C : A {
};
struct D : B,C {
};
int main()
{
D d;
B *bp = &d;
C *cp = &d;
A *a1p = bp;
A *a2p = cp;
void *v1p = dynamic_cast<void *>(a1p);
void *v2p = dynamic_cast<void *>(a2p);
std::cout << (a1p==a2p) << "\n";
std::cout << (v1p==v2p) << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgewogIHZpcnR1YWwgfkEoKSB7IH0KfTsKCnN0cnVjdCBCIDogQSB7Cn07CgpzdHJ1Y3QgQyA6IEEgewp9OwoKc3RydWN0IEQgOiBCLEMgewp9OwoKaW50IG1haW4oKQp7CiAgRCBkOwogIEIgKmJwID0gJmQ7CiAgQyAqY3AgPSAmZDsKICBBICphMXAgPSBicDsKICBBICphMnAgPSBjcDsKICB2b2lkICp2MXAgPSBkeW5hbWljX2Nhc3Q8dm9pZCAqPihhMXApOwogIHZvaWQgKnYycCA9IGR5bmFtaWNfY2FzdDx2b2lkICo+KGEycCk7CiAgc3RkOjpjb3V0IDw8IChhMXA9PWEycCkgPDwgIlxuIjsKICBzdGQ6OmNvdXQgPDwgKHYxcD09djJwKSA8PCAiXG4iOwp9Cg==