void f3(int i) { printf("f3(%d)\n", i); }
functype1 f2(int i) { printf("f2(%d)\n", i); return f3; }
functype2 f1(int i) { printf("f1(%d)\n", i); return f2; }
functype3 f(int i) { printf("f(%d)\n", i); return f1; }
int main()
{
int o = 1, _ = 2;
f(o^_^o)(o^_^o)(o^_^o)(o^_^o);
return 0;
}