class X { public: X(int p) : fx(p) {} int fx; }; class Y { public: Y(int p) : fy(p) {} int fy; }; class B : public virtual X,public Y { public: B(int p) : X(p-1),Y(p-2){} }; class C : public virtual X,public Y { public: C(int p) : X(p+1),Y(p+1){} }; class D : public B, public C { public: D(int p) : X(p-1), B(p-2), C(p+1){} }; int main() { D* d = new D(5); B* b = d; C* c = d; std::cout << b->fx << b->fy << c->fx << c->fy; return 0; } // What is the output of running the program?