#include <iostream>
using namespace std;
 
using opType = void(*)(int&, int);
const opType ops[3] =
{
	[](int&  , int  ){ cout << "noop" << endl; },
    [](int& x, int i){ cout << x << " += " << i << endl; x += i; },
	[](int& x, int i){ cout << x << " -= " << i << endl; x -= i; }
};
 
void doIt(int k, int &x, int i)
{
	auto f = ops[int(k > 0) + (2 * int(k < 0))];
	f(x, i);
}
 
int main()
{
	int x = 0;
	cout << "x = " << x << endl;
	doIt(0, x, 1);
	doIt(1, x, 5);
	doIt(-1, x, 3);
	cout << "x = " << x << endl;
	return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdXNpbmcgb3BUeXBlID0gdm9pZCgqKShpbnQmLCBpbnQpOwpjb25zdCBvcFR5cGUgb3BzWzNdID0KewoJW10oaW50JiAgLCBpbnQgICl7IGNvdXQgPDwgIm5vb3AiIDw8IGVuZGw7IH0sCiAgICBbXShpbnQmIHgsIGludCBpKXsgY291dCA8PCB4IDw8ICIgKz0gIiA8PCBpIDw8IGVuZGw7IHggKz0gaTsgfSwKCVtdKGludCYgeCwgaW50IGkpeyBjb3V0IDw8IHggPDwgIiAtPSAiIDw8IGkgPDwgZW5kbDsgeCAtPSBpOyB9Cn07Cgp2b2lkIGRvSXQoaW50IGssIGludCAmeCwgaW50IGkpCnsKCWF1dG8gZiA9IG9wc1tpbnQoayA+IDApICsgKDIgKiBpbnQoayA8IDApKV07CglmKHgsIGkpOwp9CgppbnQgbWFpbigpCnsKCWludCB4ID0gMDsKCWNvdXQgPDwgInggPSAiIDw8IHggPDwgZW5kbDsKCWRvSXQoMCwgeCwgMSk7Cglkb0l0KDEsIHgsIDUpOwoJZG9JdCgtMSwgeCwgMyk7Cgljb3V0IDw8ICJ4ID0gIiA8PCB4IDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==