#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;
}