#include <iostream>
using namespace std;
 
class A {
public: 
	int test; 
    A(string text = "Constructor A") { cout << text << endl; }
};
 
class B:  virtual public A {
public:
    B(): A("A called from B") { cout << "Constructor B" << endl; }
};
 
class C : virtual public A {
public:
    C() : A("A called from C") { cout << "Constructor C" << endl; }
};
 
class D :  public B,  public C {
public: 
    D() { cout << "Constructor D" << endl; }
};
 
int main() {
	D d;
	cout << &d.B::test <<endl; 
	cout << &d.C::test <<endl; 
	cout <<&d.test<<endl; 
	return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7CnB1YmxpYzogCglpbnQgdGVzdDsgCiAgICBBKHN0cmluZyB0ZXh0ID0gIkNvbnN0cnVjdG9yIEEiKSB7IGNvdXQgPDwgdGV4dCA8PCBlbmRsOyB9Cn07CgpjbGFzcyBCOiAgdmlydHVhbCBwdWJsaWMgQSB7CnB1YmxpYzoKICAgIEIoKTogQSgiQSBjYWxsZWQgZnJvbSBCIikgeyBjb3V0IDw8ICJDb25zdHJ1Y3RvciBCIiA8PCBlbmRsOyB9Cn07CgpjbGFzcyBDIDogdmlydHVhbCBwdWJsaWMgQSB7CnB1YmxpYzoKICAgIEMoKSA6IEEoIkEgY2FsbGVkIGZyb20gQyIpIHsgY291dCA8PCAiQ29uc3RydWN0b3IgQyIgPDwgZW5kbDsgfQp9OwoKY2xhc3MgRCA6ICBwdWJsaWMgQiwgIHB1YmxpYyBDIHsKcHVibGljOiAKICAgIEQoKSB7IGNvdXQgPDwgIkNvbnN0cnVjdG9yIEQiIDw8IGVuZGw7IH0KfTsKCmludCBtYWluKCkgewoJRCBkOwoJY291dCA8PCAmZC5COjp0ZXN0IDw8ZW5kbDsgCgljb3V0IDw8ICZkLkM6OnRlc3QgPDxlbmRsOyAKCWNvdXQgPDwmZC50ZXN0PDxlbmRsOyAKCXJldHVybiAwOwp9