#include <iostream>
struct A {
A(int n) { std::cout << "A" << n << " "; }
};
struct B : virtual A {
B() : A(1) { std::cout << "B "; }
};
struct C : virtual A {
C() : A(2) { std::cout << "C "; }
};
struct D : B, C {
D() : A(3), B(), C() { std::cout << "D"; }
};
int main() { D d; } 