#include <iostream>
auto create_counter()
{
return [counter = 0] () mutable -> int { return ++counter; };
}
int main()
{
auto counter1 = create_counter();
auto counter2 = create_counter();
std::cout << counter1() << std::endl;
std::cout << counter1() << std::endl;
std::cout << counter2() << std::endl;
std::cout << counter2() << std::endl;
std::cout << counter1() << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKYXV0byBjcmVhdGVfY291bnRlcigpCnsKICAgIHJldHVybiBbY291bnRlciA9IDBdICgpIG11dGFibGUgLT4gaW50IHsgcmV0dXJuICsrY291bnRlcjsgfTsKfQoKaW50IG1haW4oKQp7CiAgIGF1dG8gY291bnRlcjEgPSBjcmVhdGVfY291bnRlcigpOwogICBhdXRvIGNvdW50ZXIyID0gY3JlYXRlX2NvdW50ZXIoKTsKCiAgIHN0ZDo6Y291dCA8PCBjb3VudGVyMSgpIDw8IHN0ZDo6ZW5kbDsKICAgc3RkOjpjb3V0IDw8IGNvdW50ZXIxKCkgPDwgc3RkOjplbmRsOwoKICAgc3RkOjpjb3V0IDw8IGNvdW50ZXIyKCkgPDwgc3RkOjplbmRsOwogICBzdGQ6OmNvdXQgPDwgY291bnRlcjIoKSA8PCBzdGQ6OmVuZGw7CgogICBzdGQ6OmNvdXQgPDwgY291bnRlcjEoKSA8PCBzdGQ6OmVuZGw7Cn0K