#include <iostream>
#ifdef __BORLANDC__
#else
  using namespace std;
#endif

class DaneX
  {
   protected:
   double dx;
   public:
   DaneX(double px):dx(px) { cout<<"x="<<dx<<':'<<&dx<<';'; }
   double x()const { return(dx); }
   void x(double px) { dx=px; }
  };

class DaneXY:virtual public DaneX
  {
   protected:
   double dy;
   public:
   DaneXY(double px,double py):DaneX(px),dy(py) { cout<<"y="<<dy<<':'<<&dy<<';'; }
   double y()const { return(dy); }
   void y(double py) { dy=py; }
  };

class DaneXZ:virtual public DaneX
  {
   protected:
   double dz;
   public:
   DaneXZ(double px,double pz):DaneX(px),dz(pz) { cout<<"z="<<dz<<':'<<&dz<<';'; }
   double z()const { return(dz); }
   void z(double pz) { dz=pz; }
  };

double f(double x)
  {
   cout<<"="<<x<<';';
   return(x);
  }

class DaneXYZ:public DaneXZ,public DaneXY
  {
   protected:
   double b,a;
   public:
   DaneXYZ(double pxy,double py,double pxz,double pz,double pa,double pb):b(f(pb)),a(f(pa)),DaneXY(pxy,py),DaneXZ(pxz,pz),DaneX(0) { cout<<"xyz;"; }
  };


int main()
  {
   DaneXYZ Q(1,2,3,4,11,22);
   cout<<endl;
   DaneXY P(1,2);
   cout<<endl;
   DaneXZ R(3,4);

   return(0);
  }
