#include <iostream>
using namespace std;

struct Base {
	virtual void foo() {
		cout << "Base::foo()" << endl;
	}
	
	virtual void bar() {
		cout << "Base::bar()" << endl;
	}
};

struct Derived1 : public Base {
	void bar() override {
		Base::bar();
	}
};

struct Derived2 : public Base {
	void bar() override {
		Base::bar();
	}
};

struct Derived : public Derived1,Derived2 {
	void bar() override {
		cout << "Derived::bar()" << endl;
		Derived1::bar();
		Derived2::bar();
	}
};

int main() {
	Derived d;
	d.bar();
	return 0;
}