#include <iostream>
#include <memory>

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

void run(bool stop) {
    auto owner = std::make_unique<Trace>(9);
    std::cout << "value " << owner->value << '\n';
    if (stop) {
        std::cout << "early\n";
        return;
    }
    std::cout << "normal\n";
}

int main() {
    run(false);
    std::cout << "returned\n";
    run(true);
    std::cout << "returned\n";
    return 0;
}
