#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;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIEEKewpwdWJsaWM6CiAgICBpbnQgYTsKICAgIEEoaW50IGEpCiAgICB7CiAgICAgICAgdGhpcy0+YT1hOwogICAgfQoKICAgIHZpcnR1YWwgdm9pZCBhZGQoaW50IHZhbCkKICAgIHsKICAgICAgICBhICs9IHZhbDsKICAgICAgICBjb3V0IDw8ICJBZGRlZCB2YWx1ZSBvZiBhOiAiIDw8IGEgPDwgZW5kbDsKICAgIH0KfTsKY2xhc3MgQiA6IHB1YmxpYyBBCnsKcHVibGljOgogICAgaW50IGI7CiAgICBCKGludCBhLCBpbnQgYik6IEEoYSkKICAgIHsKICAgICAgICB0aGlzLT5iPWI7CiAgICB9CiAgICB2b2lkIGFkZChpbnQgdmFsKSBvdmVycmlkZQogICAgewogICAgICAgIGIgKz0gdmFsOwogICAgICAgIGNvdXQgPDwgIkFkZGVkIHZhbHVlIG9mIGI6ICIgPDwgYiA8PCBlbmRsOwogICAgfQp9OwpjbGFzcyBDIDogcHVibGljIEIKewpwdWJsaWM6CiAgICBpbnQgYzsKICAgIEMoaW50IGEsIGludCBiLCBpbnQgYyk6IEIoYSwgYikKICAgIHsKICAgICAgICB0aGlzLT5jPWM7CiAgICB9Cn07CnZvaWQgYWRkQVZhbChBICpvYmopCnsKICAgIGludCB2YWw7CiAgICBjaW4gPj4gdmFsOwogICAgb2JqLT5hZGQodmFsKTsKfQppbnQgbWFpbigpCnsKICAgIEEgb2JqKDUpOwogICAgYWRkQVZhbCgmb2JqKTsKICAgIEIgb2JqYigxNSwgMTApOwogICAgYWRkQVZhbCgmb2JqYik7CiAgICBDIG9iamMoMSwgMjAsIDI1KTsKICAgIGFkZEFWYWwoJm9iamMpOwogICAgcmV0dXJuIDA7Cn0=