#include <iostream>

struct Trace {
    int value;
    explicit Trace(int initial) : value{initial} {}
    ~Trace() {
        std::cout << "destroy " << value << '\n';
    }
};

void run(bool stop) {
    Trace* raw = new Trace{9};
    std::cout << "value " << raw->value << '\n';
    if (stop) {
        std::cout << "early\n";
        delete raw;
        return;
    }
    std::cout << "normal\n";
    delete raw;
}

int main() {
    run(false);
    run(true);
    return 0;
}
