#include <iostream>
#include <functional>
#include <cstdint>
#include <string>
#include <algorithm>
std::int64_t FizzBuzzBase(std::int64_t N,std::uint64_t T, std::string Name) {
if (std::abs(N)% T==0){
std::cout << Name;
N = std::abs(N)*-1;
}
return N;
}
bool Tail(std::int64_t N) {
if (N > 0) {
std::cout << N << std::endl;
}
else {
std::cout << std::endl;
}
return true;
}
int main() {
auto fizz = std::bind(FizzBuzzBase, std::placeholders::_1, 3, "Fizz");
auto buzz = std::bind(FizzBuzzBase, std::placeholders::_1, 5, "buzz");
auto gizz = std::bind(FizzBuzzBase, std::placeholders::_1, 7, "gizz");
Tail(buzz(fizz(1)));
Tail(buzz(fizz(3)));
Tail(buzz(fizz(5)));
Tail(buzz(fizz(15)));
Tail(gizz(buzz(fizz(7))));
Tail(gizz(buzz(fizz(21))));
Tail(gizz(buzz(fizz(35))));
Tail(gizz(buzz(fizz(105))));
Tail(gizz(buzz(fizz(997))));
auto gizz2 = std::bind(FizzBuzzBase, std::placeholders::_1, 5, "gizz");
auto buzz2 = std::bind(FizzBuzzBase, std::placeholders::_1, 7, "buzz");
Tail(buzz2(gizz2(fizz(105))));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnN0ZDo6aW50NjRfdCBGaXp6QnV6ekJhc2Uoc3RkOjppbnQ2NF90IE4sc3RkOjp1aW50NjRfdCBULCBzdGQ6OnN0cmluZyBOYW1lKSB7CglpZiAoc3RkOjphYnMoTiklIFQ9PTApewoJCXN0ZDo6Y291dCA8PCBOYW1lOwoJCU4gPSBzdGQ6OmFicyhOKSotMTsKCX0KCXJldHVybiBOOwp9Cgpib29sIFRhaWwoc3RkOjppbnQ2NF90IE4pIHsKCQlpZiAoTiA+IDApIHsKCQkJc3RkOjpjb3V0IDw8IE4gPDwgc3RkOjplbmRsOwoJCX0KCQllbHNlIHsKCQkJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCQl9CgoJCXJldHVybiB0cnVlOwp9CgoKaW50IG1haW4oKSB7CglhdXRvIGZpenogPSBzdGQ6OmJpbmQoRml6ekJ1enpCYXNlLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIDMsICJGaXp6Iik7CglhdXRvIGJ1enogPSBzdGQ6OmJpbmQoRml6ekJ1enpCYXNlLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIDUsICJidXp6Iik7CglhdXRvIGdpenogPSBzdGQ6OmJpbmQoRml6ekJ1enpCYXNlLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIDcsICJnaXp6Iik7CgkKCVRhaWwoYnV6eihmaXp6KDEpKSk7CglUYWlsKGJ1enooZml6eigzKSkpOwoJVGFpbChidXp6KGZpenooNSkpKTsKCVRhaWwoYnV6eihmaXp6KDE1KSkpOwoKCVRhaWwoZ2l6eihidXp6KGZpenooNykpKSk7CglUYWlsKGdpenooYnV6eihmaXp6KDIxKSkpKTsKCVRhaWwoZ2l6eihidXp6KGZpenooMzUpKSkpOwoJVGFpbChnaXp6KGJ1enooZml6eigxMDUpKSkpOwoJVGFpbChnaXp6KGJ1enooZml6eig5OTcpKSkpOwoJYXV0byBnaXp6MiA9IHN0ZDo6YmluZChGaXp6QnV6ekJhc2UsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgNSwgImdpenoiKTsKCWF1dG8gYnV6ejIgPSBzdGQ6OmJpbmQoRml6ekJ1enpCYXNlLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIDcsICJidXp6Iik7CgoJVGFpbChidXp6MihnaXp6MihmaXp6KDEwNSkpKSk7CglyZXR1cm4gMDsKfQ==