#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;
}