#include <iostream>
using namespace std;
class Base
{
private:
int m_a;
public:
Base(int a): m_a(a) { }
Base operator+(const Base& rhs) { return Base(m_a + rhs.m_a); }
void print() { cout << m_a; }
};
class A: public Base
{
private:
int m_b;
A(Base base, int b): Base(base), m_b(b) { }
public:
A(int a, int b): Base(a), m_b(b) { }
A operator+(const A& rhs) { return A(Base::operator+(rhs), m_b + rhs.m_b); }
void print() { Base::print(); cout << " " << m_b; }
};
int main()
{
A a1(1, 2), a2(3, 4);
A sum = a1 + a2;
sum.print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQmFzZQp7CnByaXZhdGU6CiAgICBpbnQgbV9hOwpwdWJsaWM6CiAgICBCYXNlKGludCBhKTogbV9hKGEpIHsgfQogICAgQmFzZSBvcGVyYXRvcisoY29uc3QgQmFzZSYgcmhzKSB7IHJldHVybiBCYXNlKG1fYSArIHJocy5tX2EpOyB9CiAgICB2b2lkIHByaW50KCkgeyBjb3V0IDw8IG1fYTsgfQp9OwpjbGFzcyBBOiBwdWJsaWMgQmFzZQp7CnByaXZhdGU6CiAgICBpbnQgbV9iOwogICAgQShCYXNlIGJhc2UsIGludCBiKTogQmFzZShiYXNlKSwgbV9iKGIpIHsgfQpwdWJsaWM6CiAgICBBKGludCBhLCBpbnQgYik6IEJhc2UoYSksIG1fYihiKSB7IH0KICAgIEEgb3BlcmF0b3IrKGNvbnN0IEEmIHJocykgeyByZXR1cm4gQShCYXNlOjpvcGVyYXRvcisocmhzKSwgbV9iICsgcmhzLm1fYik7IH0KICAgIHZvaWQgcHJpbnQoKSB7IEJhc2U6OnByaW50KCk7IGNvdXQgPDwgIiAiIDw8IG1fYjsgfQp9OwoKCmludCBtYWluKCkKewoJQSBhMSgxLCAyKSwgYTIoMywgNCk7CglBIHN1bSA9IGExICsgYTI7CglzdW0ucHJpbnQoKTsKICAgIHJldHVybiAwOwp9