#include <iostream.h>

template <class Item> class decorator {
public:
  void draw() { it.draw();}
private:
 Item it;
};

template <class Item> class border : public decorator<Item> {
 public:
  void draw() {
    cout << "border*" ; 
    decorator<Item>::draw();

  };

};

template <class Item> class title : public decorator <Item> {
 public:

  void draw() {
    cout << "title*" ;
    decorator<Item>::draw();
  };
};

class window {
 public:
  void draw () { cout << "window" << endl; };
};



main () {

  window aW;
  title<window > aTW;
  border< title< window> >  aBTW;
  border< window>   aBW;
 title< border< window>  > aTBW;
  typedef title < border < window > > TBWclass;
  TBWclass a, b;  
  aW.draw();
  aTW.draw();
  aBTW.draw();
  aTBW.draw();
  a.draw();
  b.draw();
}

