class A {

  public:

  A();
};



class B : public A
{

  public:
  
  B();
  
};



class D 
{
  public:

  D();

  void add(A *a);
};


class E : public D
{
  public:

  E();

  void add(B *b);
};





main()
{
  A *a = new A();
  B *b = new B();
  
  D *d = new D();

  d->add(a);
  
  E *e = new E();
  e->add(b);
}
