#include <iostream>
using namespace std;
class A
{
protected:
int m;
public:
A(int d=0){m=d;}
int GetD(){return doGetD();}
virtual int doGetD(){return m;}
};
class B:public A
{
protected:
int m;
public:
B(int d=1){m=d;}
int doGetD(){return m;}
};
class C:public B
{
protected:
int m;
public:
C(int d=1){m=d;}
};
int main()
{
C c(100);
cout<<c.GetD()<<endl
<<c.A::GetD()<<endl
<<c.B::GetD()<<endl
<<c.C::GetD()<<endl
<<c.A::doGetD()<<endl
<<c.B::doGetD()<<endl
<<c.C::doGetD()<<endl;
return 0;
}