#include <cstdio>

class Base1 {
public:
    int func1() { return var1 = 1; }
    int var1;
};

class Base2 {
public:
    int func2() { return var2 = 2; }
    int var2;
};

class Derived : public Base1, public Base2 {
public:
    int func() { return var = func1() + func2(); }
    int var;
};

int main() {
    Derived o;
	std::printf("%d %d %d\n", o.func1(), o.func2(), o.func());
	std::printf("%d %d %d %p %p %p\n", o.var1, o.var2, o.var, &o.var1, &o.var2, &o.var);
    std::printf("%p %p %p\n", &o, static_cast<Base1*>(&o), static_cast<Base2*>(&o));
	return 0;
}