How Not to Program in C++: 111 Broken Programs and 3 Working Ones, or Why Does 2+2=5986