#include<iostream>
using namespace std;
class A
{
public:
    int a;
    A(int a)
    {
        this->a=a;
    }

    virtual void add(int val)
    {
        a += val;
        cout << "Added value of a: " << a << endl;
    }
};
class B : public A
{
public:
    int b;
    B(int a, int b): A(a)
    {
        this->b=b;
    }
    void add(int val) override
    {
        b += val;
        cout << "Added value of b: " << b << endl;
    }
};
class C : public B
{
public:
    int c;
    C(int a, int b, int c): B(a, b)
    {
        this->c=c;
    }
};
void addAVal(A *obj)
{
    int val;
    cin >> val;
    obj->add(val);
}
int main()
{
    A obj(5);
    addAVal(&obj);
    B objb(15, 10);
    addAVal(&objb);
    C objc(1, 20, 25);
    addAVal(&objc);
    return 0;
}