#include <iostream>
void sub1() {
int x;
auto sub2 = [&] () {
std::cout << x << std::endl;
};
auto sub4 = [&] (auto subx) {
int x = 4;
subx();
};
auto sub3 = [&] () {
int x = 3;
sub4(sub2);
};
x = 1;
sub3();
}
int main() {
sub1();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBzdWIxKCkgewoJaW50IHg7CglhdXRvIHN1YjIgPSBbJl0gKCkgewoJCXN0ZDo6Y291dCA8PCB4IDw8IHN0ZDo6ZW5kbDsKCX07CglhdXRvIHN1YjQgPSBbJl0gKGF1dG8gc3VieCkgewoJCWludCB4ID0gNDsKCQlzdWJ4KCk7Cgl9OwoJYXV0byBzdWIzID0gWyZdICgpIHsKCQlpbnQgeCA9IDM7CgkJc3ViNChzdWIyKTsKCX07Cgl4ID0gMTsKCXN1YjMoKTsKfQoKaW50IG1haW4oKSB7CglzdWIxKCk7CglyZXR1cm4gMDsKfQ==