#include <iostream>
struct A {
int a;
};
struct B : virtual public A {
};
struct C : virtual public A {
};
struct D : virtual public B, virtual public C {
void d1() { a = 1; }
void d2() { a = 2; }
};
int main() {
D d;
d.d1();
d.d2();
std::cout << d.a << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgewogICAgaW50IGE7Cn07CgpzdHJ1Y3QgQiA6IHZpcnR1YWwgcHVibGljIEEgewp9OwoKc3RydWN0IEMgOiB2aXJ0dWFsIHB1YmxpYyBBIHsKfTsKCnN0cnVjdCBEIDogdmlydHVhbCBwdWJsaWMgQiwgdmlydHVhbCBwdWJsaWMgQyB7CiAgICB2b2lkIGQxKCkgeyBhID0gMTsgfQogICAgdm9pZCBkMigpIHsgYSA9IDI7IH0KfTsKCmludCBtYWluKCkgewogICAgRCBkOwogICAgZC5kMSgpOwogICAgZC5kMigpOwogICAgc3RkOjpjb3V0IDw8IGQuYSA8PCBzdGQ6OmVuZGw7Cn0=