#include<iostream>

using namespace std;

class A {
protected:
    A() { cout << "Executing A()" << endl; }
public:
    A(const A &) { cout << "Executing A(const A &)" << endl; }
    ~A() { cout << "Executing ~A()" << endl; }
};

class B : public A {
public:
    B() { cout << "Executing B()" << endl; }
    ~B() { cout << "Executing ~B()" << endl; }
};

class C : public B {
public:
    C() { cout << "Executing C()" << endl; }
    ~C() { cout << "Executing ~C()" << endl; }
};

void someFunc() {
    A a = C();
}

int main() {
    someFunc();
    return 0;
}