#include <iostream>

template <class T>
class BASE
{
    protected:

        T DATA;

    public:

        BASE()
        {
            DATA = 10;
        }
        ~BASE(){}

};
template <class T>
class A : public virtual BASE<T>
{
    public:

        A(){}
        ~A(){}

};
template <class T>
class B : public virtual BASE<T>
{
    public:

        B(){}
        ~B(){}

};
template <class T>
class C: public A<T>, public B<T>
{

    public:

        C(){}
        ~C(){}
        T getDATA()
        {
                return DATA;
        }
};
int main()
{
    C<int> c;
    std::cout<<c.getDATA()<<std::endl;

    return 0;
}
