After hours of struggle, here's the FizzBuzz