#include <iostream>
class StringPrinter
{
const char* content;
public:
StringPrinter(const char* s) : content(s) { std::cout << '(' << content << ')' << std::endl; }
~StringPrinter() { std::cout << '[' << content << ']' << std::endl; }
};
#define func(S) StringPrinter PASTE1(stringPrinterInstance, __LINE__) (S)
#define PASTE1(T1, T2) PASTE2(T1, T2)
#define PASTE2(T1, T2) T1 ## T2
int main()
{
func("1");
func("2");
func("3");
func("whatever");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgU3RyaW5nUHJpbnRlcgp7CiAgICBjb25zdCBjaGFyKiBjb250ZW50OwpwdWJsaWM6CiAgICBTdHJpbmdQcmludGVyKGNvbnN0IGNoYXIqIHMpIDogY29udGVudChzKSB7IHN0ZDo6Y291dCA8PCAnKCcgPDwgY29udGVudCA8PCAnKScgPDwgc3RkOjplbmRsOyB9CiAgICB+U3RyaW5nUHJpbnRlcigpIHsgc3RkOjpjb3V0IDw8ICdbJyA8PCBjb250ZW50IDw8ICddJyA8PCBzdGQ6OmVuZGw7IH0KfTsKCiNkZWZpbmUgZnVuYyhTKSBTdHJpbmdQcmludGVyIFBBU1RFMShzdHJpbmdQcmludGVySW5zdGFuY2UsIF9fTElORV9fKSAoUykKI2RlZmluZSBQQVNURTEoVDEsIFQyKSBQQVNURTIoVDEsIFQyKQojZGVmaW5lIFBBU1RFMihUMSwgVDIpIFQxICMjIFQyCgppbnQgbWFpbigpCnsKICAgIGZ1bmMoIjEiKTsKICAgIGZ1bmMoIjIiKTsKICAgIGZ1bmMoIjMiKTsKICAgIGZ1bmMoIndoYXRldmVyIik7Cn0=