#include <stdio.h>
#include <string.h>
struct ics {int i; char cs[32];};
struct ics init(int i) {
struct ics ics = {i};
return ics;
}
void p(struct ics ics) {
if (*ics.
cs) puts(ics.
cs); else printf("%d\n", ics.
i); }
struct ics concat(struct ics ics, const char *s) {
return ics;
}
#define nsconcat(ics, n, s) ics.i % n == 0 ? concat(ics, s) : ics
struct ics fizz(struct ics ics) {return nsconcat(ics, 3, "Fizz");}
struct ics buzz(struct ics ics) {return nsconcat(ics, 5, "Buzz");}
struct ics gizz(struct ics ics) {return nsconcat(ics, 7, "Gizz");}
int main() {
p(buzz(fizz(init(1))));
p(buzz(fizz(init(3))));
p(buzz(fizz(init(5))));
p(buzz(fizz(init(15))));
p(buzz(fizz(init(997))));
p(gizz(buzz(fizz(init(7)))));
p(gizz(buzz(fizz(init(21)))));
p(gizz(buzz(fizz(init(35)))));
p(gizz(buzz(fizz(init(105)))));
p(buzz(gizz(fizz(init(105)))));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4Kc3RydWN0IGljcyB7aW50IGk7IGNoYXIgY3NbMzJdO307CnN0cnVjdCBpY3MgaW5pdChpbnQgaSkgewogIHN0cnVjdCBpY3MgaWNzID0ge2l9OwogIHJldHVybiBpY3M7Cn0Kdm9pZCBwKHN0cnVjdCBpY3MgaWNzKSB7CiAgaWYgKCppY3MuY3MpIHB1dHMoaWNzLmNzKTsgZWxzZSBwcmludGYoIiVkXG4iLCBpY3MuaSk7Cn0Kc3RydWN0IGljcyBjb25jYXQoc3RydWN0IGljcyBpY3MsIGNvbnN0IGNoYXIgKnMpIHsKICBpZiAoc3RybGVuKGljcy5jcykgKyBzdHJsZW4ocykgPCBzaXplb2YgaWNzLmNzKSBzdHJjYXQoaWNzLmNzLCBzKTsKICByZXR1cm4gaWNzOwp9CiNkZWZpbmUgbnNjb25jYXQoaWNzLCBuLCBzKSBpY3MuaSAlIG4gPT0gMCA/IGNvbmNhdChpY3MsIHMpIDogaWNzCnN0cnVjdCBpY3MgZml6eihzdHJ1Y3QgaWNzIGljcykge3JldHVybiBuc2NvbmNhdChpY3MsIDMsICJGaXp6Iik7fQpzdHJ1Y3QgaWNzIGJ1enooc3RydWN0IGljcyBpY3MpIHtyZXR1cm4gbnNjb25jYXQoaWNzLCA1LCAiQnV6eiIpO30Kc3RydWN0IGljcyBnaXp6KHN0cnVjdCBpY3MgaWNzKSB7cmV0dXJuIG5zY29uY2F0KGljcywgNywgIkdpenoiKTt9CmludCBtYWluKCkgewogIHAoYnV6eihmaXp6KGluaXQoMSkpKSk7CiAgcChidXp6KGZpenooaW5pdCgzKSkpKTsKICBwKGJ1enooZml6eihpbml0KDUpKSkpOwogIHAoYnV6eihmaXp6KGluaXQoMTUpKSkpOwogIHAoYnV6eihmaXp6KGluaXQoOTk3KSkpKTsKCiAgcChnaXp6KGJ1enooZml6eihpbml0KDcpKSkpKTsKICBwKGdpenooYnV6eihmaXp6KGluaXQoMjEpKSkpKTsKICBwKGdpenooYnV6eihmaXp6KGluaXQoMzUpKSkpKTsKICBwKGdpenooYnV6eihmaXp6KGluaXQoMTA1KSkpKSk7CgogIHAoYnV6eihnaXp6KGZpenooaW5pdCgxMDUpKSkpKTsKICByZXR1cm4gMDsKfQo=