#include <iostream>
struct Adder
{
operator int () const
{ return result; }
Adder add (int value) const
{ return Adder{result + value}; }
Adder operator ()(int value) const
{ return add(value); }
int result = 0;
};
Adder add (int value)
{
return Adder{value};
}
int main()
{
std::cout << add(1)(2)(3);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEFkZGVyCnsKCW9wZXJhdG9yIGludCAoKSBjb25zdAoJeyByZXR1cm4gcmVzdWx0OyB9CgkKCUFkZGVyIGFkZCAoaW50IHZhbHVlKSBjb25zdAoJeyByZXR1cm4gQWRkZXJ7cmVzdWx0ICsgdmFsdWV9OyB9CgkKCUFkZGVyIG9wZXJhdG9yICgpKGludCB2YWx1ZSkgY29uc3QKCXsgcmV0dXJuIGFkZCh2YWx1ZSk7IH0KCglpbnQgcmVzdWx0ID0gMDsKfTsKCkFkZGVyIGFkZCAoaW50IHZhbHVlKQp7CglyZXR1cm4gQWRkZXJ7dmFsdWV9Owp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6Y291dCA8PCBhZGQoMSkoMikoMyk7CgogICAgcmV0dXJuIDA7Cn0K