#include < iostream >
using namespace std;
class A
{
public:
A(int n):val(n){ }
protected:
int val;
};
class B:public A
{
B*pb;
public:
B(int n):A(n){pb=(n >0?new B(n-1):0);}
~B(){delete pb;}
void display()
{
cout< < val< < endl;
if(pb)pb->display();
}
};
int main()
{
B b(4);
b.display();
return 0;
}